链接器没有在.lib中看到函数

时间:2012-04-02 23:59:19

标签: c++ c visual-studio linker

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

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

D:\WinDDK\7600.16385.1\inc\ddk
D:\WinDDK\7600.16385.1\inc\api

以下库目录:

D:\WinDDK\7600.16385.1\lib\win7\i386

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

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 Files\Microsoft SDKs\Windows\v6.0A\\lib\MSCOREE.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:\WinDDK\7600.16385.1\lib\win7\i386\hid.lib:
1>    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
...
...
...

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

2 个答案:

答案 0 :(得分:0)

我看到你可能有MS SDK。

  • 启动cmd.exe,
  • 转到“C:\ Program Files \ Microsoft SDKs \ 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,这应该做同样的事情。

答案 1 :(得分:0)

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

当我在c ++文件中导入C模块时,包含的内容没有extern "C":|