我需要将64位.lib文件从COFF转换为OMFCoff2Omf.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/

10-11 03:38