我不明白为什么dumpbin在Visual Studio命令行上执行以下操作时返回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所报告。
这是一个dumpbin解释错误,还是我错过了一些重要的东西?
答案 0 :(得分:0)
似乎没有64bit
或32bit
静态库类型。在使用objdump
和dumpbin
对库执行某些断言后,两者都报告了正确的信息。
objdump
报告目标文件的某些为64位,其他为32位。
dumpbin
做了同样的事情。
问题从GMP构建系统中解脱出来;它将64位和32位目标文件嵌入到静态库中。
只要您不使用其中一个64位目标文件中的任何设施,您的程序将正确链接到32位应用程序,这解释了CFF的输出。
要解决此问题,您必须联系GMP网站。