Из статической библиотеки MinGW (.a) в статическую библиотеку Visual Studio (.lib)
Я пытаюсь использовать xlsLib для создания электронных таблиц Excel из приложения на С++.
Проблема в том, что компиляция xlsLib, я предоставляю файл .a(статическая библиотека GCC, созданная MinGW). Но мое приложение зависит от другого API (PhysX
), который компилируется только с помощью Visual Studio.
Таким образом: возможно ли преобразовать статическую библиотеку GCC (xlslib.a
) в файл статической библиотеки Visual Studio (xlslib.lib
)?
Ответы
Ответ 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"
"
Ответ 3
Вот два ресурса, которые я нашел полезными:
[snip, неправильная ссылка]
http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html
Изменить. Я не могу найти ссылку, которую я искал. Между тем, проверьте это: http://www.willus.com/mingw/yongweiwu_stdcall.html
Ответ 4
Насколько я знаю, это одно и то же. Файлы Visual Studio .lib
также являются ar
архивами, содержащими объектные файлы. Вы пытались просто переименовать файл?:)