提问人:Dominique 提问时间:5/30/2018 更新时间:5/31/2018 访问量:868
32 位到 64 位:LNK2019错误,如何检索相关信息
32-bit to 64-bit : LNK2019 error, how to retrieve relevant information
问:
我正在开发一个 32 位 C++ 应用程序,我正在将其转换为 64 位应用程序(只需选择另一种配置,复制并调整所有相关设置,并尝试让它构建),现在我卡在链接器错误上,我想获得更多信息:
我已经用 32 位重新构建了应用程序, 我已经找到了引用的函数,但是当我按 F12、Shift+F12 或 Ctrl+F12 时,我看不到从哪里检索实现。LNK2019 "unresolved external symbol ... referenced in function ..."
我认为该函数的实现在DLL中的某个地方,但我想确定它(一旦确认,我就可以查找相应的设置,定义位置,并为我的64位配置复制此设置)。
也许这个问题可以用以下方式重新表述:如果从DLL中检索到函数,是否可以知道该函数是在哪个DLL中实现的?
答:
0赞
Dominique
5/31/2018
#1
Hans,关于 *.map 文件的建议是救命稻草:这让我知道在哪个文件中找到上述函数。
显然,这还不是结束:提到的文件是一个 DLL,虽然没有引用 DLL 本身,而是引用重定向到 DLL 的 LIB 文件。
如果这还不够困难:函数本身就是一个函数,并且似乎有一个问题:__imp_
- 32 位:函数(在后面观看两个下划线
__imp__
imp
) - 64 位:函数(观察后面的单下划线
__imp_
imp
)
最后,我通过检查构建输出解决了这个问题(比较和条目,并确保它们在两种情况下是相似的:当一个输出中有对 32 位库的引用时,另一个输出中应该有对 64 位库的引用)。
在 32 位输出中,我看到链接器引用了一个库,在 64 位链接的情况下他没有这样做:我在项目的配置中添加了相应的库(配置属性、链接器、输入、其他依赖项),这最终解决了这个问题。LIB=
PATH=
评论