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

时间:2013-01-28 13:27:11

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

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

此应用程序通过包含LoadImage()来使用windows.h Windows API函数。虽然应用程序在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

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

由于链接器没有抱怨没有找到User32.lib,因此我认为它试图将平台SDK中的错误版本(即32位版本)链接起来。但是,如何找出链接器实际尝试使用的LIB文件的确切副本?

1 个答案:

答案 0 :(得分:3)

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

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