C++ 链接DLL时出现的问题

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

我正在尝试使用第三方DLL(我正在使用MinGW编译),但我面临一些问题。首先,DLL导出未修饰的名称,但在头文件中看到的函数声明包含“\uu stdcall”。另外,我使用C++,但是我已经用“Extn”C“`.”p> 错误:

对“Play”的未定义引用_Stop@4"

我曾尝试直接链接到DLL,因为G++理论上能够做到这一点,但我得到了一些“未定义的引用”

然后我尝试使用gendef(
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
...