我最近在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上运行。
附加依赖项:
答案 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框,然后单击出现的按钮。
如果项目配置正确,这应该是什么样子。请注意如何勾选“继承”复选框以及继承值如何列出标准SDK库。与kernel32.lib一样,链接库具有__imp_FlushFileBuffers等的定义。如果它在您的项目中看起来不像这样,那么您将收到这些链接器错误。