我需要将64位.lib文件从COFF
转换为OMF
。 Coff2Omf.exe
可以与32位库一起正常工作,但可以提供...
ERROR: COFF error: FOOx64.lib
(coffread.cpp, 1637) : invalid machine type detected
...在64位库上
是否有用于此目的的更新工具或类似工具?
最佳答案
根据Embarcadero的文档:
Differences Between Clang-based C++ Compilers and Previous-Generation C++ Compilers
对象和库文件格式
BCC32及其相关工具在.obj和.lib文件中使用OMF。
基于Clang的C ++编译器在.o和.a文件中使用ELF。
例如,这种差异意味着,在迁移32位Windows应用程序时,必须将对.lib和.obj文件的引用分别更改为.a和.o。
BCC64.EXE, the C++ 64-bit Windows Compiler
编译目标文件
ELF64格式
#pragma link
只要您使用默认文件类型,就不要指定modulename的文件扩展名(.ext)。链接器为modulename的文件扩展名(.ext)假定以下默认值:
BCC32的.obj
扩展名
.o
扩展名:
基于Clang的C ++编译器
BCCOSX
因此,如果省略.ext
,则会根据当前目标平台自动使用正确的扩展名。
OMF仅由32位编译器/链接器使用。 64位编译器/链接器改用ELF64。
关于static-libraries - 怎么把64bit COFF转换成OMF?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31095280/