最近我一直在维护一个用VC++ 6.0编写的遗留项目.代码使用了这个编译器的许多独特特性,将它移植到更新的标准编译器已被证明是一项艰巨的任务.
在项目的数千行代码中,有四个汇编程序文件.由于某种原因,我不明白,MASM615和TASM也无法编译它们(它们发送错误),但我有目标文件.但是,当我链接库时,我收到一条消息
警告LNK4033:将对象格式从OMF转换为COFF
该库按预期工作,但我一直想知道这些二进制格式之间的差异是什么,或者我是否应该期望这种转换有些丑陋.
有没有我可以用OMF对象格式获得Windows的预编译BLAS和LAPACK二进制文件?我想将一些D语言代码链接到这些.我知道在哪里可以获得COFF格式的相关库.我也知道objconv工具,它将COFF转换为OMF,尽管由于我不完全理解的原因,这似乎在实践中不起作用.这些似乎与符号中的下划线有关,尽管我尝试了几乎每个设置来处理这些并且似乎都没有.
或者,是否有人知道如何将引用二进制文件转换为OMF,以便它们实际上可以正确链接到DMD编译的代码?作为最后的手段,有谁知道如何使用DMC构建CLAPACK,CBLAS和F2CLIB?这些附带的构建过程似乎完全面向GCC工具链.
有没有办法将COFF库(lib文件)转换为OMF库以便与C++ Builder6一起使用?这个coff不仅仅是导入库,还包含一些代码.当我尝试使用borland的coff2omf.exe转换它时,我从15KB文件中获取1KB文件.
有没有像Borland"coff2omf.exe"这样的工具将Borland OMF LIB格式转换为MS VC++ COFF LIB格式?
实际上我想在delphi中创建.obj文件并在MSVC++中使用它.
在我编译的C++ Builder中,我得到了
[ilink32 Error] Error: 'C:\PATH\TO\A\LIB\INCLUDED\IN\THE\PROJECT\ALIBRARY.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Run Code Online (Sandbox Code Playgroud)
当我用实用程序转换.lib时coff2omf,新的lib会丢失重要的功能.
omf ×5
coff ×3
c++builder ×2
visual-c++ ×2
arm ×1
blas ×1
builder ×1
c++ ×1
d ×1
delphi ×1
lapack ×1
object-files ×1