我需要转换一个64位的.lib文件从COFF到OMF。Coff2Omf.exe在32位库中工作得很好,但给出了...
ERROR: COFF error: FOOx64.lib
(coffread.cpp, 1637) : invalid machine type detected...on一个64位的库。有没有更新的工具或类似的工具来做这件事?
发布于 2015-07-01 02:17:25
根据Embarcadero的文档:
Differences Between Clang-based C++ Compilers and Previous-Generation C++ Compilers
对象和库文件格式
例如,这种不同意味着,当您迁移32位Windows应用程序时,必须将对.lib和.obj文件的引用分别更改为.a和.o。
BCC64.EXE, the C++ 64-bit Windows Compiler
编译的目标文件
ELF64格式
#pragma link
只要您使用的是默认文件类型,
就不要指定modulename的文件扩展名(.ext)。链接器假定modulename的文件扩展名(.ext)为以下默认值:
用于BCC32
.o扩展的.obj扩展,用于:基于Clang的C++编译器
BCCOSX
因此,如果省略了.ext,则会根据您当前的目标平台自动使用正确的扩展。
OMF仅供32位编译器/链接器使用。64位编译器/链接器改用ELF64。
发布于 2015-06-30 13:03:04
我想知道OMF规范是否存在于64位体系结构中。顺便问一下,为什么你需要64位的OMF文件? C++Builder上的64位版本是基于LLVM编译器后端的,它可以生成ELF目标文件(据我所知)。
我不知道像coff2elf这样的东西是否与C++Builder XE7捆绑在一起,但是,也许你可以使用开源工具,比如“对象文件转换器”,在这里查找它:http://www.agner.org/optimize/#objconv
https://stackoverflow.com/questions/31095280
复制相似问题