• 8151阅读
  • 7回复

[提问]求QT(MinGW编译器)如何使用VS2010编译的dll文件 [复制链接]

上一主题 下一主题
离线herowufei
 

只看楼主 倒序阅读 楼主  发表于: 2014-09-11
如题....在pro文件直接加VS编译的lib文件编译说找不到符号....
LIBS += -L../../lib/ -INetClient
绝对路径也试过了..应该正确加载了但是和导入库里的函数匹配不上吧????
请问该怎么做才能使用此DLL呢?

       ps:该动态库里的函数都是__stdcall压栈方式..据说这样的方式两个编译器生成的函数名字就不一样..我该怎么改呢?
离线herowufei

只看该作者 1楼 发表于: 2014-09-11
编译报错....
离线彩阳

只看该作者 2楼 发表于: 2014-09-11
使用C的调用约定。
接口用extern "C"包裹。
上海Qt开发联盟,热忱地欢迎你的加入!
离线liuyuanan

只看该作者 3楼 发表于: 2014-09-12
调用约定写成 extern "C" __declspec(dllimport)
extern "C" __declspec(dllexport)
离线herowufei

只看该作者 4楼 发表于: 2014-09-12
感谢回答...不过试过了不行..还是找不到.....
离线dbzhang800

只看该作者 5楼 发表于: 2014-09-12
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

2条评分好评度+1金钱+1
herowufei 好评度 +1 感谢解答.涨知识了! 2014-09-16
herowufei 金钱 +1 感谢解答.涨知识了! 2014-09-16
离线herowufei

只看该作者 6楼 发表于: 2014-09-16
最后我直接动态加载的Dll就认识了.....
离线sudalv0313

只看该作者 7楼 发表于: 2016-05-23
遇到了一样的问题
快速回复
限100 字节
 
上一个 下一个