Какой вариант компилятора я должен выбрать? - PullRequest
1 голос
/ 07 января 2011

Мне нужно использовать стороннюю статическую библиотеку для запуска моего приложения qt в Windows.Третья сторона предоставляет мне .lib и .h файл для использования.Эти библиотеки скомпилированы с помощью компилятора MSVC.

Мой Qt Creator использует компилятор MinGW для компиляции моего приложения.Я скопировал файлы .h и .lib в каталог своего проекта qt, а затем добавил их в файл .pro следующим образом

QT + = core gui

TARGET = MyTest TEMPLATE = app

LIBS + = C: \ Qt \ 2010.05 \ qt \ MyTest \ newApi.lib

SOURCES + = main.cpp \ mainwindow.cpp

HEADERS + = главное окно.h \ newApi.h

FORMS + = mainwindow.ui

Теперь я получаю сообщение об ошибке во время выполнения, например:

Запуск C: \ Qt\ 2010.05 \ qt \ MyTest-build-desktop \ debug \ MyTest.exe ... C: \ Qt \ 2010.05 \ qt \ MyTest-build-desktop \ debug \ MyTest.exe завершен с кодом -1073741515

Может ли кто-нибудь предположить, что эта ошибка во время выполнения связана с несовпадением компилятора?(из-за моего .lib-файла, который я добавил, он компилируется в компиляторе MSVC, а мое приложение qt компилируется с помощью компилятора MinGW)

Если нет, в чем может быть причина?Я что-то упускаю при добавлении файлов .h и .lib в мой проект qt?

Если мой компилятор MinGW не будет поддерживать файл .lib, сгенерированный в компиляторе MSVC, что может быть обходным решением?

Могу ли я создать .lib файлы в компиляторе MinGW?или этот формат поддерживается только компилятором MSVC?

Пожалуйста, предложите ...

Ответы [ 2 ]

1 голос
/ 09 января 2011

Если бы эта проблема возникла из-за несоответствия компиляторов (MINGW и MSVC), я ожидал бы, что связывание приложения не удастся. Но это, видимо, сработало.

Возможно, проблема в том, что некоторая зависимая DLL не найдена при запуске приложения. Проверьте с помощью обходчика зависимостей (http://www.dependencywalker.com/), доступны ли все пути DLL в пути поиска.

1 голос
/ 08 января 2011

Если сторонняя библиотека предоставляет интерфейс C ++, вы должны использовать тот же компилятор для создания приложения. Если вы не можете позволить себе коммерческую версию visual studio, вы можете использовать express edition . Вы должны выяснить, какая версия компилятора (2005, 2008, 2010) использовалась в библиотеке, потому что в противном случае вы можете столкнуться с проблемами совместимости. По той же причине вам, вероятно, придется создавать статическое приложение, но сначала изучите условия лицензирования Qt .

...