链接器在 .lib 中看不到函数

Linker doesn't see function inside .lib

本文关键字:看不到 函数 lib 链接      更新时间:2023-10-16

我正在Visual Studio C/C++中编写一个小型Win32应用程序,该应用程序使用WDK与HID设备进行通信。

我在选项>项目和解决方案>VC++目录中添加了以下包含目录:

D:WinDDK7600.16385.1incddk
D:WinDDK7600.16385.1incapi

和以下库目录:

D:WinDDK7600.16385.1libwin7i386

我还将以下lib文件设置为项目属性>配置属性>链接器>附加依赖项:

hid.lib

但当我尝试编译时,我得到:

error LNK2028: unresolved token (0A000040) "unsigned char __stdcall HidD_SetOutputReport(void *,void *,unsigned long)" ...

尽管如此,这应该在hid.lib 中

我是不是错过了什么?

--更新--在SooWeiTan的建议下,我启用了Properties->Linker->Show Progress,现在我在这里看到了以下内容:

1>    Searching C:Program FilesMicrosoft SDKsWindowsv6.0A\libMSCOREE.lib:
1>      Found __CorExeMain@0
1>        Loaded MSCOREE.lib(mscoree.dll)
1>      Found __IMPORT_DESCRIPTOR_mscoree
1>        Referenced in MSCOREE.lib(mscoree.dll)
1>        Loaded MSCOREE.lib(mscoree.dll)
1>      Found mscoree_NULL_THUNK_DATA
1>        Referenced in MSCOREE.lib(mscoree.dll)
1>        Loaded MSCOREE.lib(mscoree.dll)
1>    Searching D:WinDDK7600.16385.1libwin7i386hid.lib:
1>    Searching C:Program FilesMicrosoft SDKsWindowsv6.0A\libkernel32.lib:
...
...
...

由此,我认为它在hid.lib中找不到任何有趣的东西,而它应该找到我的麻烦函数。。。知道为什么会发生这种事吗?

我看你可能有MS SDK。

  • 启动cmd.exe
  • 转到"C:\Program Files\Microsoft SDK \Windows\v7.1\Bin"--您的版本可能是6.0
  • 运行"SetEnv.cmd/x86"
  • 转到带有lib的目录
  • 运行"dumpbin/exports hid.lib | findstr HidD_SetOutputReport"

如果什么都没有得到,那么lib显然不包含该函数(不妨只尝试函数名称的某些部分来确保)。如果你得到了一些东西,那么指向lib的路径是错误的。这确实是造成问题的全部原因。如果运行setenv有问题,另一种方法应该是转到您正在使用的MSVC的目录,然后转到VC\bin并运行vcvars32.bat,这应该做同样的事情。

我很惭愧地说我发现了问题:(.我是C:\C++noob,但仍然…

当我在C++文件中导入C模块时,include:|

附近没有extern "C"