Ошибка компоновщика "содержит неверную запись 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 несовместимы (вы, возможно, заметили это;)).
У вас есть несколько вариантов.
- Если вы можете, получите исходный код библиотеки и скомпилируйте его с вашим собственным компилятором. Таким образом, шанс на успех - самый высокий.
- Я могу ошибаться, так как это было давно, однако я считаю, что есть инструмент под названием
implib
который берет общую библиотеку (.dll) и генерирует.lib из стиля Embarcardero из этого для использования в вашем проекте. - использование
COFF2OMF
конвертировать статическую библиотеку. И даже если размер файла странный, по крайней мере, попробуйте. - Попробуйте
LoadLibrary
вызов функции. Для этого необходимо вручную отобразить нужные вам функции, однако вы можете использовать.lib
,
Удачи.