Qt呼叫VC 生成的動態鏈結庫

2021-10-04 15:04:39 字數 1427 閱讀 1597

qt如何呼叫vc++生成的動態鏈結庫?假設當前有vc++編譯器生成的動態庫檔案testdll.h,testdll.lib和testdll.dll。

testdll.**件原始碼如下:

#ifdef testdll_exports

#define testdll_api __declspec (dllexport)

#else

#define testdll_api __declspec (dllimport)

#endif

// 此類是從 testdll.dll 匯出的

class testdll_api ctestdll

int sub(int a, int b)

int mul(int a, int b)

};extern testdll_api int ntestdll;

testdll_api int fntestdll(void);

qt如何使用這些動態鏈結庫檔案?

一、情況1,程式設計環境是qt creator+qt libraries 4.8.6 for windows (vs 2010)

qt庫是vs2010版本,vc++編譯器生成的。所以工程可以直接使用testdll.h標頭檔案和testdll.lib引入庫檔案。

1、把testdll.h拷貝到工程路徑;

2、工程檔案***.pro需要手動新增"headers += testdll.h"和"libs += testdll.lib";

3、編譯前,需要把lib檔案:testdll.lib和testdll.dll一起拷貝到構建路徑下面。

如此便可以正常使用vc++動態鏈結庫函式。

二、情況2,程式設計環境是qt creator+qt libraries 4.8.6 for windows (mingw 4.8.2)

qt庫是mingw版本,gcc編譯器生成,與vc++編譯器不是同個體系。所以工程不可以使用testdll.h標頭檔案和testdll.lib引入庫檔案。

對於呼叫dll的方法,qt本身就有相應的類來實現。

#include "dialog.h"

#include

typedef int (*func_add)(int a, int b); //定義函式指標

typedef int (*func_sub)(int a, int b);

typedef int (*func_mul)(int a, int b);

int main(int argc, char *ar**)

if (f2 != null)

if (f3 != null)

}dialog w;

w.show();

return a.exec();

}

Qt呼叫VC 生成的動態鏈結庫

qt如何呼叫vc 生成的動態鏈結庫?假設當前有vc 編譯器生成的動態庫檔案testdll.h,testdll.lib和testdll.dll。testdll.h檔案原始碼如下 ifdef testdll exports define testdll api declspec dllexport el...

Qt呼叫VC 生成的動態鏈結庫

qt如何呼叫vc 生成的動態鏈結庫?假設當前有vc 編譯器生成的動態庫檔案testdll.h,testdll.lib和testdll.dll。testdll.h檔案原始碼如下 ifdef testdll exports define testdll api declspec dllexport el...

qt動態鏈結庫so的生成與呼叫

linux下qt建立和呼叫共享庫檔案.so 費了點功夫,總算get了編寫共享庫 shared library,windows下稱為 動態鏈結庫 即dynamic link library 和呼叫的這個新技能!動態鏈結庫的好處是不言而喻的,乙個稍微複雜一點的程式,頂層設計的時候良好的類庫劃分可以讓工作...