Visual Studio 2010 C++:如何判断链接器实际尝试链接哪些 LIB 文件?

Dan*_*ner 3 linker visual-studio-2010 visual-c++-2010

我正在 Visual Studio 2010 Pro 中处理一个(非托管的)x64 Win32 C++ 应用程序,并且不断收到一个奇怪的链接错误。

此应用程序LoadImage()通过包含windows.h. 虽然应用程序在 Release 配置中编译得很好(并LoadImage()完成了它的工作),但我无法在 Debug 配置中链接可执行文件。我不断收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

如果我从 Unicode 切换到非多字节字符集,错误消息会相应地从 更改LoadImageW()LoadImageA(),但否则会持续存在。由于我在 Release 和 Debug 配置的属性中找不到任何相关差异,我不知道为什么它会编译为一个,而不是另一个。在两种配置中都User32.lib正确设置为链接器的附加依赖项,并且/MACHINE:X64在两者中也设置了标志。

由于链接器不会抱怨找不到User32.lib,我相信它试图从 Platform SDK 链接错误的版本,即 32 位版本。但是我如何才能找出链接器实际尝试使用的 LIB 文件的确切副本?

小智 5

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

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