标题:求QT(MinGW编译器)如何使用VS2010编译的dll文件
作者:herowufei
日期:2014-09-11 13:53
内容:
如题....在pro文件直接加VS编译的lib文件编译说找不到符号....
LIBS += -L../../lib/ -INetClient
绝对路径也试过了..应该正确加载了但是和导入库里的函数匹配不上吧????
请问该怎么做才能使用此DLL呢?
ps:该动态库里的函数都是__stdcall压栈方式..据说这样的方式两个编译器生成的函数名字就不一样..我该怎么改呢?
#1 [herowufei 09-11 13:55]
编译报错....
#2 [彩阳 09-11 22:16]
使用C的调用约定。
接口用extern "C"包裹。
#3 [liuyuanan 09-12 08:49]
调用约定写成 extern "C" __declspec(dllimport)
extern "C" __declspec(dllexport)
#4 [herowufei 09-12 16:15]
感谢回答...不过试过了不行..还是找不到.....
#5 [dbzhang800 09-12 16:41]
1. C++ 的二进制没有ABI保证,所以不同编译器不能混用。
2. 如果你有这个dll的源码,用MinGW重新编译即可
如果你没有这个dll的源码(假定叫A.dll),其他人已经告诉你答案:用你的VS2010编写另一个dll(假定叫做B.dll),然后用B.dll 调用你的A.dll,B导出C接口而不是C++的接口。这样你就可以通过B来使用A
3. .lib 是VC的导入库,MinGW要链接它的话,你需要将其转换成 .a 。或者,干脆不要 .lib ,直接让MinGW链接 .dll