在 Windows 64 中编译 32 位应用程序时无法解析的外部符号

2024-03-15

所以我正在尝试将遗留应用程序从 32 位编译为 64 位.. 我重新编译了它使用的所有库,并使其查找 WIN SDK6.0A x64 位的库。

我在用:

  • Visual Studio 专业版 2008
  • 视觉C++
  • dotNet 框架 3.5 SP1
  • Windows Server 2008R2
  • Windows SDK是6.0A

一切终于出现了,但我收到了这些奇怪的未定义符号错误:

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 的 win 东西。 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 它指向正确的文件夹。

所以我真的很困惑为什么它找不到它们。

有任何想法吗???

Thanks


所以我终于明白了,有点... 没有找到 psapi.lib

在项目->链接器->附加依赖项中,而不只是说 psapi.lib 我给了它完整的路径并且它有效...... 不太清楚为什么之前找不到它,但是哦好吧......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 64 中编译 32 位应用程序时无法解析的外部符号 的相关文章

随机推荐