我正在开发一个 32 位 C++ 应用程序,我正在将其转换为 64 位应用程序(只需选择另一个配置,复制并调整所有相关设置,然后尝试构建它),现在我得到了陷入链接器错误
LNK2019 "unresolved external symbol ... referenced in function ..."
,我想获取更多信息:我认为该函数的实现位于 DLL 内部的某个位置,但我想确定这一点(一旦确认,我可以查找相应的设置,定义位置,并为我的 64 位配置复制此设置) .
也许问题可以用以下方式重新表述:如果从 DLL 中检索函数,是否可以知道该函数是在哪个 DLL 中实现的?
Hans,关于 *.map 文件的建议是一个救星:这让我知道在哪个文件中可以找到提到的函数。
显然,这还没有结束:提到的文件是一个 DLL,虽然没有引用 DLL 本身,但引用了一个 LIB 文件,该文件重定向到 DLL。
如果这还不够困难:函数本身是一个
__imp_
函数,并且似乎有一个陷阱:
__imp__
函数(注意 imp
后的两个下划线)__imp_
函数(注意 imp
后面的单下划线)最后,我通过检查构建输出解决了这个问题(比较
LIB=
和 PATH=
条目,并确保它们在两种情况下相似:当一个输出中有对 32 位库的引用时,应该有一个引用其他输出中的 64 位库)。