Извините что сразу не уточнил
Да в студии используется стандартный компилятор(msvc toolset), а в Qt MinGW32bit
Т.е получается, что библа используемая в проекте должна быть собрана тем же компилятором что и сам проект иначе никак.
Я правильно понимаю? Может можно как-то настроить?
В C++ нет стандарта по экспорту методов при сборке библиотек, поэтому библиотеки совместимы только тогда, когда собраны одним и тем же компилятором.
Такой стандарт есть в C, но тогда в C++ коде глобальные методы (для других нельзя) нужно задекларировать как
C++ (Qt)
// MyCFuncs.h
#ifdef __cplusplus
extern "C" { // only need to export C interface if
// used by C++ source code
#endif
__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();
#ifdef __cplusplus
}
#endif
Далее небольшой геморрой с подготовкой файлов для другого компилятора
Инструментами из состава MinGW для библиотеки требуется выполнить
- Запустить gendef example.dll(сгенерирует example.def)
- Запустить dlltool -D example.dll -d example.def -l libexample.a(сгенерирует libexample.a)
- Использовать libexample.a вместе с example.dll для линковки с проектом на MinGW
И главное не напутать с битностью библиотеки, так как инструменты не выдают никаких ошибок).
Такой подход следует использовать только тогда, когда нет исходных файлов example и он поставляется исключительно в виде готовой библиотеки, в противном случае это просто садомазохизм.