C++ 链接DLL时出现的问题
我正在尝试使用第三方DLL(我正在使用MinGW编译),但我面临一些问题。首先,DLL导出未修饰的名称,但在头文件中看到的函数声明包含“\uu stdcall”。另外,我使用C++,但是我已经用“Extn”C“`.”p> 错误: 对“Play”的未定义引用_Stop@4" 我曾尝试直接链接到DLL,因为G++理论上能够做到这一点,但我得到了一些“未定义的引用” 然后我尝试使用gendef(C++ 链接DLL时出现的问题,c++,g++,mingw,stdcall,C++,G++,Mingw,Stdcall,我正在尝试使用第三方DLL(我正在使用MinGW编译),但我面临一些问题。首先,DLL导出未修饰的名称,但在头文件中看到的函数声明包含“\uu stdcall”。另外,我使用C++,但是我已经用“Extn”C“`.”p> 错误: 对“Play”的未定义引用_Stop@4" 我曾尝试直接链接到DLL,因为G++理论上能够做到这一点,但我得到了一些“未定义的引用” 然后我尝试使用gendef(gendef theirdell.dll)生成一个.def文件,后来我使用dlltool生成导入库: dll
gendef theirdell.dll
)生成一个.def
文件,后来我使用dlltool
生成导入库:
dlltool-k——没有前导下划线-d theirdl.def-d theirdl.dll-l theirdl.a
。请注意,我使用了--没有前导下划线
,正如我在nm
中观察到的那样,所有函数前面都有一个下划线,这导致了问题
然而,即使做了所有这些,我也不能让它正确链接。有什么想法吗
我已经检查了链接器是否找到了静态库
头文件中的函数声明:
BOOL __stdcall Play_Stop(LONG nPort);
该指令包括:
extern "C"{
#include "PlaySDK.h"
}
nm命令输出(他们的RDLL.a)
错误是:
对“Play”的未定义引用_Stop@4"
提前谢谢你 如何链接应用程序?我使用的是Qt,“LIBS”部分如下:-L$$PWD/sdk/lib-someOthersDll$$PWD/sdk/lib/theirdl.a
...
daazs00103.o:
00000000 b .bss
00000000 d .data
00000000 i .idata$4
00000000 i .idata$5
00000000 i .idata$6
00000000 i .idata$7
00000000 t .text
00000000 T Play_Stop@4
00000000 I __imp_Play_Stop@4
...