Подтвердить что ты не робот

Из статической библиотеки MinGW (.a) в статическую библиотеку Visual Studio (.lib)

Я пытаюсь использовать xlsLib для создания электронных таблиц Excel из приложения на С++.

Проблема в том, что компиляция xlsLib, я предоставляю файл .a(статическая библиотека GCC, созданная MinGW). Но мое приложение зависит от другого API (PhysX), который компилируется только с помощью Visual Studio.

Таким образом: возможно ли преобразовать статическую библиотеку GCC (xlslib.a) в файл статической библиотеки Visual Studio (xlslib.lib)?

4b9b3361

Ответ 1

Архивы статических библиотек, сгенерированных с помощью MinGW, обычно совместимы с компилятором/компоновщиком Visual С++. Таким образом, вы должны иметь возможность использовать их напрямую, добавляя .a файлы к вложению компоновщика в свои свойства проекта в Visual Studio:

  • Перейдите в проект Properties (Alt-F7).
  • В левом окне откройте Configuration Properties->Linker->Input
  • Добавить список всех архивов .a, которые необходимо использовать
  • Вам может потребоваться добавить также MinGW libgcc.a library

Кроме того, могут возникнуть проблемы с смешанными библиотеками времени выполнения properties of C/C++->Code Generation->Runtime Library, но это зависит от вашей конфигурации сборки, которую вы используете с MinGW. Иногда нужно ссылаться на libmsvcrt.a на MinGW, но во многих случаях (если не на большинстве) это вызывает проблемы.

Наконец, эта смешанная ссылка MinGW и Visual С++ обычно работает, но для модулей C, и, насколько мне известно, она не работает для С++.

Ответ 2

но используя .a, мой .exe не сможет отлаживать "Отладочная информация не может быть найдена". - энтропия 22 мая в 12:27

потому что библиотека .a не содержит отладочную информацию, необходимую для отладки. вам нужно сообщить компилятору добавить информацию об отладке в компиляцию, если вы хотите ее отладить. для mingw вам нужно добавить "-g" в CFLAGS, когда вы запускаете "make", например "make CFLAGS="-g""

Ответ 4

Насколько я знаю, это одно и то же. Файлы Visual Studio .lib также являются ar архивами, содержащими объектные файлы. Вы пытались просто переименовать файл?:)