从x32迁移到x64时链接器错误

时间:2013-07-24 17:25:26

标签: c++ windows visual-studio visual-c++

我最近在VS professional 2008中将一个项目从x32迁移到了x64,我收到了这个奇怪的链接器错误:

error LNK2001: unresolved external symbol __imp_PostMessageW
error LNK2001: unresolved external symbol __imp_FlushFileBuffers
error LNK2001: unresolved external symbol __imp_WriteFile
error LNK2001: unresolved external symbol __imp_WaitForSingleObject
error LNK2001: unresolved external symbol __imp_SetFilePointer
error LNK2001: unresolved external symbol __imp_EnterCriticalSection
...

更多这种性质。 我在链接器中包含 shlwapi.lib 。 在Windows 7 x64上运行。

附加依赖项:

enter image description here

2 个答案:

答案 0 :(得分:2)

我的问题的解决方案是设置链接器>一般>其他图书馆目录"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64"而不是"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib"

答案 1 :(得分:1)

确保选中x64配置。在Solution Explorer窗口,Properties,Linker,Input中右键单击您的项目。单击Additional Dependencies框,然后单击出现的按钮。

enter image description here

如果项目配置正确,这应该是什么样子。请注意如何勾选“继承”复选框以及继承值如何列出标准SDK库。与kernel32.lib一样,链接库具有__imp_FlushFileBuffers等的定义。如果它在您的项目中看起来不像这样,那么您将收到这些链接器错误。