VS QT 呼叫第三方庫dll總結

2022-06-23 12:51:41 字數 1804 閱讀 3446

假設外部第三方庫為 test.h,test.lib,test.dll,
呼叫的函式是 int fntest(int param);
靜態呼叫需要用到第三方的檔案:.h .dll .lib
靜態呼叫跟使用本專案內的函式差不多,區別的一點在於本專案內的函式要在被呼叫之前宣告,靜態呼叫需要把第三方的標頭檔案(.h)和lib檔案匯入到專案中。
匯入第三方庫的方法有2種:
①.在使用第三方庫的檔案中加入
#include "

test.h

"#pragma comment(lib,"test.lib")/*根據.h和.lib存放的路徑設定*/

//呼叫時直接使用fntest函式即可;

int result = fntest(4);

②.在專案-屬性中設定
新增標頭檔案:在屬性介面,c++->常規->附加包含目錄中加入標頭檔案 test.h;
新增lib檔案,在屬性介面,鏈結器->常規->附加庫目錄中加入lib檔案所在的目錄 鏈結器->輸入->附加依賴項中加入lib檔案 test.lib;
注意上述的分號不要省略。
呼叫時直接使用fntest函式即可;
int result = fntest(4);

當只有.dll檔案時,可以採用動態呼叫;動態呼叫步驟如下:
//

1.定義乙個指標函式 typedef void(*fun)

typedef int(*functest)(int

);

//2.定義乙個控制代碼,獲取dll的位址

hinstance hdll = loadlibrary("

test.dll");

if(nullptr ==hdll)

//3.定義乙個函式指標獲取函式位址

functest test = (functest)getprocaddress(hdll,"

fntest");

if(nullptr ==test)

//4.通過定義的函式指標呼叫函式

int iresult = test(5

);

//最後一定要記得釋放控制代碼,上述2,3,4步驟如果失敗也要釋放控制代碼

freelibrary(hdll);

qt的隱式呼叫與c++靜態呼叫相似,兩種方法
①.與c++靜態呼叫方式相同;
②.在.pro檔案空白位置單擊右鍵,新增庫
然後再進行①操作.
qt提供qlibrary類顯式呼叫外部工具,具體步驟如下:
//

1.定義乙個指標函式 typedef void(*fun)

typedef int(*functest)(int

);

//2.定義乙個qlibrary類,載入dll

qlibrary qlibdll("

test.dll);

if(!qlibdll.load())//

載入dll

//3.定義乙個函式指標獲取函式位址

functest test = (functest)qlibdll.resolve("

fntest");

if(nullptr ==test)

//4.通過定義的函式指標呼叫函式

int iresult = test(5

);

//5.釋放記憶體

qlibdll.unload();

android呼叫第三方庫

把第三方so放在新建的libs armeabi 中 因為android.mk檔案中的當前目錄跳到local path call my dir 即jni下,所以這個libs armeabi必須在jni下 android.mk local path call my dir warning local p...

Qt 呼叫第三方庫

一 製作動態庫c 動態庫 c 生成dll,專案名稱mydll 件 ifndef mdll h define mdll h ifdef mylibdll define mylibdll extern c declspec dllimport else define mylibdll extern c ...

IOS第三方庫總結

1.xlform 靈活而強大的建立動態table view表單 2.響應式程式設計 1 oc下的reactivecocoa 2 swift下的rxswift,bond 3.json與模型的轉換 1 oc下 mjextension 4.網路請求 1 oc afnetworking 支援ipv6 mkn...