QT動態連線庫的編寫

2021-10-08 21:27:42 字數 1141 閱讀 9002

1.qt動態鏈結庫的編寫流程

1.1 首先在qt creator中建立乙個動態連線庫matrix,新增類名,生成乙個類(matrix.h和matrix.cpp)和乙個matrix_global.h的檔案,在matrix_global.h中可看到使用的匯出巨集,為matrixshared_export。如果只想匯出乙個函式介面,可以把類的宣告和定義刪除,然後進行匯出函式的編寫即可。

1.2 使用匯出巨集的地方,需要包含matrix_global.h標頭檔案,就可以匯出自己需要的函式,類等;

1.3 需要指定生的.dll和.lib檔案的生成目錄,若為同種語言編寫的專案呼叫該動態庫,建議把.dll和.lib檔案的生成目錄和專案的.exe生成目錄統一到乙個目錄中。通過如下方式指定生成的目錄。

//在動態庫的.pro配置檔案中新增如下語句,其中$$pwd表當前目錄,../表示上一級目錄

destdir=$$pwd/..

/bin/

//在呼叫動態庫的專案的.pro檔案中,新增如下語句

destdir=$$pwd/..

/bin/

//新增動態庫的.**件的路徑

includepath +=.

./matrix

//連線.dll,.lib檔案,注意加-l,-l和空格,字尾名可以省略,會自動識別。

libs +

=-l$$pwd/..

/bin/

-lmatrix

1.4 在修改了.pro檔案後,一定要執行qmake,才能使修改生效,這一步很容易忘記。

2.動態鏈結庫編寫的注意事項

2.1 匯出乙個純c的介面

extern

"c" matrixshared_export void

fun(

);

2.2 在匯出函式或類的時候,若為同種語言的專案呼叫匯出的功能,不需要考慮引數的問題,因為可以定義相同的引數型別,若為c#呼叫c++編寫的動態鏈結庫時,需要考慮引數型別匹配的問題,基本的資料型別,可以採用託管**,c#可以自動識別基本的資料型別。若是比較複雜或者是其獨有的資料型別,則需要通過讀寫檔案來進行資料的交流。

vs 中呼叫QT的動態連線庫

1 建立乙個 qt c 的動態連線庫 2 在標頭檔案中宣告要匯出的介面 ifndef qtdlltest h define qtdlltest hextern c declspec dllexport void init endif qtdlltest h 3 在cpp檔案中對介面進行實現 void...

動態連線庫

windows下動態鏈結庫的編寫 在vc中新建乙個空的win32動態鏈結庫工程 win32 domanic library 然後新增乙個c sourse file到工程,我這裡的檔名取dlltest.cpp。然後在檔案中新增如下內容 declspec dllexport int add int a,...

Qt動態庫載入

首先建立動態庫,在 下生成了名字為lib專案名.so lib專案名.so.1 lib專案名.so.1.0lib專案名.so.1.0.0的動態庫檔案,除了lib專案名.so.1.0.0 其他都是鏈結。在使用的專案的 檔案中,新增以下文字 是生成的專案名字。template 是這個專案的型別模板,代表是...