32位转64位:LNK2019错误,如何获取相关信息

32-bit to 64-bit : LNK2019 error, how to retrieve relevant information

我正在开发一个 32 位 C++ 应用程序,我正在将其转换为 64 位应用程序(只需选择另一个配置,复制并调整所有相关设置,然后尝试构建它),现在我陷入了链接器错误 LNK2019 "unresolved external symbol ... referenced in function ...",我想获得更多信息:
我已经在 32 位中重新构建了应用程序,并且找到了引用的函数,但是当我按 F12、Shift+F12 或 Ctrl+F12 时,我看不到从哪里检索实现。

我认为该函数的实现是在一个DLL中的某处,但我想确定一下(确定后,我可以查找相应的设置,定义位置,并将此设置复制到我的64位配置)。

也许问题可以通过以下方式重新表述:如果从 DLL 中检索到一个函数,是否可以知道该函数是在哪个 DLL 中实现的?

Hans,关于 *.map 文件的建议救了我的命:这让我知道在哪个文件中可以找到提到的函数。
显然,这还没有结束:提到的文件是一个 DLL,虽然没有指向 DLL 本身的引用,但是指向一个重定向到 DLL 的 LIB 文件。
如果这还不够困难:函数本身是一个 __imp_ 函数,而且似乎有一个问题:

  • 32 位:__imp__ 函数(注意 imp 后的两个下划线)
  • 64 位:__imp_ 函数(注意 imp 后的单下划线)

最后我通过检查构建输出解决了这个问题(比较 LIB=PATH= 条目并确保它们在两种情况下都相似:当有对 32 位库的引用时在一个输出中,另一个输出中应该有对 64 位库的引用。
在 32 位输出中,我看到链接器引用了一个库,而在 64 位链接的情况下他没有这样做:我在项目配置中添加了相应的库(配置属性、链接器、输入、附加依赖),终于解决了这个问题。