Visual Studio 2010 C++:如何确定链接器实际尝试链接的LIB文件?

4
我正在Visual Studio 2010 Pro中开发一款未经管理的x64 Win32 C++应用程序,并且一直遇到奇怪的链接错误。
通过包含windows.h,此应用程序利用LoadImage() Windows API函数。虽然在发布配置下该应用程序可以正常编译(并且LoadImage()函数也可以工作),但是我无法在调试配置下将可执行文件链接起来。我一直遇到以下错误:
Redacted.obj : error LNK2019: unresolved external symbol __imp_LoadImageW referenced in function "public: int __cdecl Redacted::Redacted::Execute(void)" (?Execute@Redacted@Redacted@@QEAAHXZ)
C:\Users\redacted\Documents\Visual Studio 2010\Projects\Redacted\x64\Debug\Redacted.exe : fatal error LNK1120: 1 unresolved externals

如果我从Unicode切换到非多字节字符集,那么错误消息将相应地从LoadImageW()更改为LoadImageA(),但其他方面仍然存在。由于我在Release和Debug配置的属性中找不到任何相关差异,所以我不知道为什么它会在一个配置中编译,而在另一个配置中却不能。在Linker中,User32.lib已正确设置为“附加依赖项”,并且/MACHINE:X64标志也在两个配置中设置了。
由于链接器没有抱怨找不到User32.lib,我认为它尝试链接错误版本的Platform SDK,即32位版本。但是我该如何找出链接器实际尝试使用哪个LIB文件的确切副本呢?
1个回答

5

请检查全局配置设置中的链接器路径,很可能其中一个是错误的。

除此之外,我相信有一个链接器/VERBOSE标志(或类似的东西),它将显示您要查找的信息。 它在您正在构建的项目的链接器设置中的某个位置。


谢谢!隐藏在奇怪命名的“显示进度”属性下的/VERBOSE标志有效,并且它向我展示了它根本没有尝试链接User32.lib。结果我错了,认为它被设置为每个地方的附加依赖项:似乎在某个地方,我意外地删除了Debug配置的“从项目默认值继承”的复选框。因此,即使User32.lib出现在列表中,它实际上也没有被链接。 - Daniel Saner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接