Ошибка компоновщика "содержит неверную запись OMF" 2

Я работаю с Embarcadero XE8 C++ Builder 32 бит.

Я добавил библиотеку в мою программу для решения Unresolved external error,

Когда я добавил библиотеку, я получил ошибку, как в заголовке. Поэтому я искал в Интернете и нашел эту тему на stackru: ошибка компоновщика "содержит недопустимую запись OMF"

Как говорит инструмент COFF2OMF, МОЖЕТ работать. К сожалению, это не сработало для меня, я даю файл библиотеки 7 МБ, когда я конвертирую его с помощью инструмента, он всего 41 КБ... поэтому я думаю, что преобразование не удалось. Когда я добавляю преобразованные файлы в свою программу, он просто игнорирует ее и по-прежнему говорит unresolved external error,

Итак, как мне заставить мою библиотеку работать с моим C++ компоновщиком?

1 ответ

Решение

Немного предыстории:

Библиотеки должны быть скомпилированы с помощью того же инструмента, что и приложение, которое вы пытаетесь создать, потому что каждый компилятор делает вещи по-своему. Большинство библиотек для Windows скомпилированы с помощью MVSC (Microsoft Visual Studio Compiler).

Вы используете Embarcardero Compiler, что означает, что библиотеки MVSC несовместимы (вы, возможно, заметили это;)).

У вас есть несколько вариантов.

  1. Если вы можете, получите исходный код библиотеки и скомпилируйте его с вашим собственным компилятором. Таким образом, шанс на успех - самый высокий.
  2. Я могу ошибаться, так как это было давно, однако я считаю, что есть инструмент под названием implib который берет общую библиотеку (.dll) и генерирует.lib из стиля Embarcardero из этого для использования в вашем проекте.
  3. использование COFF2OMF конвертировать статическую библиотеку. И даже если размер файла странный, по крайней мере, попробуйте.
  4. Попробуйте LoadLibrary вызов функции. Для этого необходимо вручную отобразить нужные вам функции, однако вы можете использовать .lib,

Удачи.

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