假設外部第三方庫為 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...