1

我正在尝试解决我的链接器错误:

错误 LNK2019:函数中引用了未解析的外部符号 _WDC_ReadAddr32@16

我不确定@16 指的是什么。

我很确定我在项目中添加了正确的 lib 文件。我使用 dumpbin.exe 转储了 lib 文件,并看到:

  • _WDC_ReadAddr16@20
  • _WDC_ReadAddr32@20
  • _WDC_ReadAddr64@20
  • _WDC_ReadAddr8@20

所以我很困惑为什么链接器会寻找_WDC_ReadAddr32@16,即使它设法链接该lib文件中的其他符号。

函数原型为:

DWORD DLLCALLCONV WDC_ReadAddr32(WDC_DEVICE_HANDLE hDev, DWORD dwAddrSpace, KPTR dwOffset, UINT32 *val);

我正在使用 Visual Studio 2010 进行编译。lib文件也是用C编译的,所以它在方法周围有extern“C”,但我试图在C++项目中使用它。

4

3 回答 3

1

@ 符号指的是Raymond Chen的函数的参数字节数

于 2013-11-04T19:51:33.413 回答
1

这是一个具有 __stdcall 调用约定的函数。

于 2013-11-04T19:08:00.303 回答
0

将 KERNEL_64BIT 添加到 C 预压缩器定义中。这样,KPTR 变为 8 个字节而不是 4 个字节,链接器将在库中查找 _WDC_ReadAddr32@20。

http://www.jungo.com/st/support/tech_docs/td43.html

于 2016-03-31T15:45:24.020 回答