gpt4 book ai didi

qt - 如何使最近的 MSVC 链接器将导入数据与 .rdata 部分合并?

转载 作者:行者123 更新时间:2023-12-04 15:42:18 24 4
gpt4 key购买 nike

近年来,我观察到 MSVC 链接器直到版本 11(Visual Studio 2012,_MSVC_VER 1700)默认将导入数据表与 .rdata 部分合并。从链接器版本 12(Visual Studio 2013,_MSVC_VER 1800)开始,此表被移至独立部分 .idata。我试图让这些较新的链接器继续将导入数据与 .rdata 合并,但没有成功(例如,选项 /merge:.idata=.rdata 导致错误消息 fatal error LNK1272: cannot将“.idata”与任何部分合并)。

偶然发现了PySide2 (version 5.13.0)的可执行文件,显然是使用链接器版本 14.15 创建的,但它再次将导入表与 .rdata 合并。这让我非常惊讶,现在我问自己:

如何让最新的 MSVC 链接器将导入表与 .rdata 合并?

顺便说一句:这与解决任何问题无关。我只是好奇。

最佳答案

似乎是我自己造成了我的困惑:很久以前我就开始使用 /merge:.rdata=.text 开关构建我的所有项目。现在区别对待的正是这个开关。对于较旧的链接器,导入表首先与 .rdata 合并。然后 /merge:.rdata=.text 开关仍然可以将 .rdata.text 合并。对于较新的链接器,开关 /merge:.rdata=.text 似乎首先被处理。当链接器随后搜索导入表的存储位置时,.rdata 不再存在。然后必须为此表创建 .idata 部分。

免责声明:我对此没有“证据”。这些只是我根据观察得出的结论。

关于qt - 如何使最近的 MSVC 链接器将导入数据与 .rdata 部分合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57424301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com