@符号在错误LNK2019中的含义是什么?

时间:2013-11-04 19:04:43

标签: c++ c visual-studio-2010 linker

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

错误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中编译的,因此它在方法周围有外部“C”,但我正在尝试在C ++项目中使用它。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

@符号是指每个Raymond Chen的number of bytes of parameters for the function

答案 2 :(得分:0)

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

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