1

我不明白为什么在 Visual Studio 命令行上执行以下命令时,dumpbin 返回 x64:

dumpbin libgmp.lib /HEADERS |more

这是在Cygwin 32位版本下编译的GMP库,构建配置如下:

./configure --host=i386 ABI=32

构建系统成功编译并构建了指定主机的所有文件。然而,dumpbin 仍然报告 .a 或 .lib 适用于 64 位架构。

请注意,输出静态库是 libgmp.a,但我将其扩展名更改为 .lib 并将其与我的 Visual Studio 项目链接,没有任何问题。

另一个重要注意事项:将 libgmp.lib 与 32 位程序链接很好,并生成一个 PE32 文件,如 CFF Explorer 报告的那样。

这是一个垃圾箱解释错误,还是我错过了一些重要的东西?

4

1 回答 1

0

似乎没有64bit32bit静态库类型。objdump在使用and对库执行一些断言后dumpbin,两者都报告了正确的信息。

objdump报告一些目标文件是 64 位,其他是 32 位。 dumpbin做了同样的事情。

问题源于 GMP 构建系统;它将 64 位和 32 位目标文件嵌入到静态库中。

只要您不使用在 64 位目标文件之一中找到的任何工具,您的程序就会正确链接到 32 位应用程序,这解释了 CFF 的输出。

为了解决这个问题,您必须联系 GMP 网站。

于 2015-02-21T05:01:03.860 回答