Я работаю с Embarcadero XE8 C ++ Builder 32 бит.
Я добавил библиотеку в мою программу для решения Unresolved external error
,
Когда я добавил библиотеку, я получил ошибку, как в заголовке. Поэтому я искал в Интернете и нашел эту тему на stackoverflow:
Ошибка компоновщика "содержит неверную запись OMF"
Как говорит инструмент COFF2OMF, МОЖЕТ работать. К сожалению, это не сработало для меня, я даю файл библиотеки 7 МБ, когда я конвертирую его с помощью инструмента, он всего 41 КБ … поэтому я думаю, что преобразование не удалось. Когда я добавляю преобразованные файлы в свою программу, он просто игнорирует ее и по-прежнему говорит unresolved external error
,
Итак, как мне заставить мою библиотеку работать с моим C ++ компоновщиком?
Немного предыстории:
Библиотеки должны быть скомпилированы с использованием того же инструмента, что и приложение, которое вы пытаетесь создать, потому что каждый компилятор работает по-своему. Большинство библиотек для Windows скомпилированы с помощью MVSC (Microsoft Visual Studio Compiler).
Вы используете Embarcardero Compiler, что означает, что библиотеки MVSC несовместимы (вы, возможно, заметили это;)).
У вас есть несколько вариантов.
implib
который берет общую библиотеку (.dll) и генерирует .lib из стиля Embarcardero из этого для использования в вашем проекте.COFF2OMF
конвертировать статическую библиотеку. И даже если размер файла странный, по крайней мере, попробуйте.LoadLibrary
вызов функции. Для этого необходимо вручную отобразить нужные вам функции, однако вы можете использовать .lib
,Удачи.