Unresolved external symbols in compiling 32 bit application in Windows 64
因此,我正在尝试将旧版应用程序从32位编译为64位。
我重新编译了它使用的所有库,并使其成为WIN SDK6.0A x64位库。.
我正在使用:
- Visual Studio专业版2008
- 视觉C
- dotNet Framework 3.5 SP1
- Windows Server 2008R2
- Windows SDK为6.0A
一切最终都出现了,但是我遇到了这些奇怪的未定义符号错误:
1 2 3 4 5 6 | error LNK2019: unresolved external symbol InterlockedDecrement referenced in function ... error LNK2019: unresolved external symbol InterlockedIncrement referenced in function ... error LNK2019: unresolved external symbol GetModuleBaseName referenced in ... error LNK2019: unresolved external symbol EnumProcessModules referenced in ... error LNK2019: unresolved external symbol EnumProcesses referenced in ... error LNK2019: unresolved external symbol GetProcessMemoryInfo referenced |
问题是这些都是来自SDK的胜利之选。
InterlockedDec和InterlockedInc来自kernel32.lib
GetModuleBaseName,EnumProcessModules,EnumProcesses,GetProcessMemoryInfo位于psapi.h中,但也包含kernel32.lib或psapi.lib
中
我检查了C:\\\\ Program Files \\\\ Microsoft SDKs \\\\ Windows \\\\ v6.0A \\\\ Lib \\\\ x64和两个库
在那里是kernel32.lib和psapi.lib。
它肯定在正确的位置查找库。我打开了/ VERBOSE:LIB
并指向正确的文件夹。
所以我真的很困惑为什么它找不到他们。
任何想法????
谢谢
所以我终于想通了,有点...
它没有找到psapi.lib
在Project-> Linker->其他依赖项中,而不只是说psapi.lib
我给了它一个完整的途径,它奏效了...
不太确定为什么以前找不到它,但是好吧...
记录:相同的问题,不同的解决方案;
我有一个目录
的条目
1 | psapi |
添加到
列表中
1 | Linker/General/Additional Library Directory |
这导致使用旧的VS2005平台sdk psapi.lib(仅具有x86,没有x64版本)。
删除条目后,现在使用已安装的WinSDK x64 / psapi.lib中的正确库。
因此,请注意旧的混合/排序
可以在代码中发布编译和链接命令行以及任何#def \\吗?
如果您从头开始创建仅调用那些方法之一的简单项目,这会发生吗?
这是一个很长的镜头(我真的不相信这是事实),但是对于c编译来说,也许标题没有用extern " C "来适当地保护吗?您是要包含系统头文件还是只是自己声明函数?
n