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

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

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

Когда я добавил библиотеку, я получил ошибку, как в заголовке. Поэтому я искал в Интернете и нашел эту тему на stackoverflow:
Ошибка компоновщика "содержит неверную запись 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,

Удачи.

2

Другие решения


По вопросам рекламы [email protected]