我正在Visual Studio 2010 Pro中开发一款未经管理的x64 Win32 C++应用程序,并且一直遇到奇怪的链接错误。
通过包含windows.h,此应用程序利用LoadImage() Windows API函数。虽然在发布配置下该应用程序可以正常编译(并且LoadImage()函数也可以工作),但是我无法在调试配置下将可执行文件链接起来。我一直遇到以下错误:
如果我从Unicode切换到非多字节字符集,那么错误消息将相应地从
由于链接器没有抱怨找不到
通过包含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文件的确切副本呢?