首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将64位COFF转换为OMF?

如何将64位COFF转换为OMF?
EN

Stack Overflow用户
提问于 2015-06-28 09:28:36
回答 2查看 2.9K关注 0票数 3

我需要转换一个64位的.lib文件从COFFOMFCoff2Omf.exe在32位库中工作得很好,但给出了...

代码语言:javascript
复制
ERROR: COFF error: FOOx64.lib
(coffread.cpp, 1637) : invalid machine type detected

...on一个64位的库。有没有更新的工具或类似的工具来做这件事?

EN

回答 2

Stack Overflow用户

发布于 2015-07-01 02:17:25

根据Embarcadero的文档:

Differences Between Clang-based C++ Compilers and Previous-Generation C++ Compilers

对象和库文件格式

  • BCC32及其相关工具在.obj中使用OMF,而.lib files.
  • Clang-based C++编译器在.o和.a .a中使用ELF

例如,这种不同意味着,当您迁移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。

票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31095280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档