Ошибка компоновщика "содержит недопустимую запись OMF"
В C++ Builder при компиляции я получаю
[ilink32 Error] Error: 'C:\PATH\TO\A\LIB\INCLUDED\IN\THE\PROJECT\ALIBRARY.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Когда я конвертирую.lib с помощью утилит coff2omf
, новая библиотека теряет важные функции.
2 ответа
C++Builder не может использовать.lib файлы из других компиляторов, только свои собственные.
Если.lib-файл является библиотекой импорта для DLL, используйте инструмент IMPLIB командной строки C++Builder для непосредственного создания нового.lib-файла из DLL.
Если файл.lib является статической библиотекой (содержащей реальный код), инструмент COFF2OMF командной строки C++Builder МОЖЕТ иметь возможность преобразовать библиотеку, но это не гарантируется. Это действительно зависит от того, какой код на самом деле использует библиотека. Если преобразование невозможно, вам придется обернуть файл.lib в библиотеку DLL, написанную в том же компиляторе, который создал файл.lib. Затем вы можете использовать DLL в C++Builder.
Я столкнулся с той же проблемой. Я использовал инструмент COFF2OMF, чтобы скрыть существующие файлы lib, чтобы сделать их совместимыми с C++Builder. Меня устраивает. Синтаксис:
..Embarcadero/../bin> COFF2OMF libssl.lib alibssl.lib
..Embarcadero/../bin> COFF2OMF libcrypto.lib alibcrypto.lib
Переименовал преобразованные файлы и поместил их в нужное место.