Ошибка компоновщика "содержит недопустимую запись 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

Переименовал преобразованные файлы и поместил их в нужное место.

Другие вопросы по тегам