在Windows 7上调查与mingw64 4.9.2的崩溃dll链接,我查看了生成的.def
文件,该文件被提供给链接器,并看到1419个导出中的前391个都具有表单的名称.refptr.FooBar
。使用mingw64 4.6.3成功链接的相同构建,在这种情况下,.def
文件不包含此类导出。
有人能告诉我这些.refptr.
前缀是什么意思吗?谷歌搜索无济于事。
答案 0 :(得分:1)
Hans Passant的GCC补丁链接的相关部分:
即将推出的新cygwin x64目标需要此功能 使用x64 Windows的完整48位可用地址空间。 cygwin-target依赖于伪重定位功能,该功能可以运行 关于指令重新安置。这可能导致x86_64问题到期 指令通常是签名的32位PC相对重新定位。所以 对于伪重新定位,距离可能变得太宽。 由于我们在pe-coff目标跳跃存根上产生的功能,我们 只需要确保通过访问变量 参考指针变量。所以我们在中型模型中添加它们 .refptr变量。
我发现我的链接器崩溃可以在没有附带损害的情况下得到纠正
只需删除.refptr.
文件中的所有.def
前缀即可。
(显然,人们不会总是那么幸运)