導航:首頁 > 源碼編譯 > matlab編譯so動態庫

matlab編譯so動態庫

發布時間:2023-07-14 12:32:23

1. 如何用Qt調用matlab生成的動態庫

先寫好實現動態鏈接庫的libmy.cpp文件和libmy.h文件,如下://libmy.cpp#include"libmy.h" #includeusingnamespacestd;MyLib::MyLib() { }MyLib::~MyLib() { } voidMyLib::hello() { coutusingnamespacestd;intmain(intargc,char*argv[]) { MyLib*lib=newMyLib(); //調用剛才編寫的動態鏈接庫 lib->hello(); cout>i; return1; }編寫main.pro文件,如下:LIBS+=-L./ #設置程序查找動態庫的目錄為當前目錄 #注意:用QT生成的動態庫默認都加了lib前綴和擴展名及版本名,但調用時不用加lib,不用加文件#擴展名so、不用加版本名1.0.0.即下面LIBS中的DllTest就是實際的動態庫libDllTest.so.1.0.0LIBS+=-lDllTest #注意:調用時不用加lib,不用加文件擴展名so、不用加版本名1.0.0,記得前面加l(字母)TARGET=libMyTest SOURCES+=main.cpp執行qmakemain.pro生成makefile文件,然後執行make,可以看到生成了libMyTest可執行文件。將動態鏈接庫libDllTest.so.1.0.0和可執行文件傳到arm板上,如下: 在arm板上執行libMyTest,如下:#chmod+x libMyTest //先賦予可執行許可權執行:# ./libMyTest 輸出如下:

2. 在MATLAB中用C語言編寫S函數時,怎麼生成動態鏈接庫(DLL)文件

在編寫好S函數的實現代碼*.c文件後,還需要在Matlab的命令輸出窗口中進行命令行輸入,完成對源代碼的編譯,這樣才能被S函數模塊所調用。在命令窗口中輸入命令:
「mex

-g

RandomTimeDelay.c」
M文件S-函數在MATLAB環境下可以通過解釋器直接執行,而C文件或其它語言編寫的C-函數,則需要先編譯成可以在MATLAB內運行的二進制代碼:動態連接庫或靜態連接庫,然後才可以使用,這些經過編譯的二進制文件就稱作MEX文件。用MEX命令來對*.c文件進行編譯,然後會在相應的目錄下生成對應的*.mexw32文件。然後就可以在simulink模塊中引用這個s函數了。

3. 如何在linux下用matlab生成動態鏈接庫

首先如何製作Linux下的so 文件

首先讓我們來看一下,把庫函數推遲到程序運行時期載入的好處:

1.可以實現進程之間的資源共享。

什麼概念呢?就是說,某個程序的在運行中要調用某個動態鏈接庫函數的時候,操作系統首先會查看所有正在運行的程序,看在內存里是否已有此庫函數的拷貝了。如果有,則讓其共享那一個拷貝;只有沒有才鏈接載入。這樣的模式雖然會帶來一些「動態鏈接」額外的開銷,卻大大的節省了系統的內存資源。C的標准庫就是動態鏈接庫,也就是說系統中所有運行的程序共享著同一個C標准庫的代碼段.

2.將一些程序升級變得簡單。用戶只需要升級動態鏈接庫,而無需重新編譯鏈接其他原有的代碼就可以完成整個程序的升級。Windows 就是一個很好的例子。

3.甚至可以真正坐到鏈接載入完全由程序員在程序代碼中控制。

程序員在編寫程序的時候,可以明確的指明什麼時候或者什麼情況下,鏈接載入哪個動態鏈接庫函數。你可以有一個相當大的軟體,但每次運行的時候,由於不同的操作需求,只有一小部分程序被載入內存。所有的函數本著「有需求才調入」的原則,於是大大節省了系統資源。比如現在的軟體通常都能打開若干種不同類型的文件,這些讀寫操作通常都用動態鏈接庫來實現。在一次運行當中,一般只有一種類型的文件將會被打開。所以直到程序知道文件的類型以後再載入相應的讀寫函數,而不是一開始就將所有的讀寫函數都載入,然後才發覺在整個程序中根本沒有用到它們

步驟:

首先建立一個函數文件fun.cpp 以及頭文件 fun.h

[cpp]view plain

  • exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/你的庫目錄

  • (2)
  • 更改/etc/ld.so.conf,添加我們的庫目錄,然後執行ldconf

    需要root許可權

    (3)加入/user/lib 或者/usr/lib64看你的機器位數,貌似拷貝的方法最湊效了,其他方法有時候行不通

    4. matlab怎麼生成動態鏈接庫

    1>首先生成目標文件,但是此時要加編譯器選項-fpic和鏈接器選項-shared,

    gcc -fpic -c add.c

    gcc -fpic -c sub.c

    生成中間文件add.o和sub.o

    2>其次生成動態庫

    gcc -shared –o libtiger.so add.o sub.o

    生成動態庫libtiger.so,libtiger.so就是我們生成的目標動態庫。我們以後使用動態庫和main.c程序生成可執行程序

    說明:

    以上兩部也可以合成一步搞定:

    gcc -fpic -shared add.c sub.c -o libtiger.so

    2.使用動態鏈接庫

    在編譯程序時,使用動態鏈接庫和靜態庫是一致的,使用」-l庫名」的方式,在生成可執行文件的時候會鏈接庫文件。

    1>使用命令:

    gcc -o main main.c -L ./ -ltiger

    2>-L指定動態鏈接庫的路勁,-ldtiger鏈接庫函數tiger。-ltiger是動態庫的調用規則。Linux系統下的動態庫命名方式是lib*.so,而在鏈接時表示位-l*,*是自己命名的庫名。

    3>但是程序會提示如下錯誤

    error while loading shared libraries: libtiger.so: cannot open shared object file: No such file or direct

    閱讀全文

    與matlab編譯so動態庫相關的資料

    熱點內容
    dvd光碟存儲漢子演算法 瀏覽:757
    蘋果郵件無法連接伺服器地址 瀏覽:962
    phpffmpeg轉碼 瀏覽:671
    長沙好玩的解壓項目 瀏覽:144
    專屬學情分析報告是什麼app 瀏覽:564
    php工程部署 瀏覽:833
    android全屏透明 瀏覽:736
    阿里雲伺服器已開通怎麼辦 瀏覽:803
    光遇為什麼登錄時伺服器已滿 瀏覽:302
    PDF分析 瀏覽:484
    h3c光纖全工半全工設置命令 瀏覽:143
    公司法pdf下載 瀏覽:381
    linuxmarkdown 瀏覽:350
    華為手機怎麼多選文件夾 瀏覽:683
    如何取消命令方塊指令 瀏覽:349
    風翼app為什麼進不去了 瀏覽:778
    im4java壓縮圖片 瀏覽:362
    數據查詢網站源碼 瀏覽:150
    伊克塞爾文檔怎麼進行加密 瀏覽:892
    app轉賬是什麼 瀏覽:163