我正在使用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文件的确切副本?
答案 0 :(得分:3)
检查全局配置设置中的链接器路径。最有可能其中一个是错误的。
除此之外,我相信还有一个链接器/ VERBOSE标志(或类似的东西),它将显示您正在寻找的信息。它位于您正在构建的项目的链接器设置中。