Компиляция с Microsoft Visual C++ 2013 под Visual Studio 2015
Я хочу использовать Qt 5.5 с Microsoft Visual Studio 2015. Но последняя совместимая версия компилятора Microsoft с Qt - MSVC2013. Итак, я хочу сказать Visual 2015 использовать "устаревший" режим для компиляции с более старой версией компилятора Microsoft.
Как это сделать?
Когда я использую MSVC2015, я получаю эту ошибку:
Gravité Code Description Projet Fichier Ligne
Erreur LNK2019 symbole externe non résolu "__declspec(dllimport) char const
* __cdecl std::_Winerror_map(int)" (__imp_?_Winerror_map@std@@YAPBDH@Z)
référencé dans la fonction "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::_System_error_category::message(int)const " (?message@_System_error_category@std@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@H@Z) helloworld C:\Users\roman\Documents\QtTest\bin\qtmaind.lib(qtmain_win.obj) 1
Я думаю, что это потому, что Qt Lib скомпилированы для MSVC2013
2 ответа
Вы пытаетесь использовать Qt, созданный для VS 2013, с кодом, созданным с VS 2015. Это никогда не сработает - это даже не проблема с Qt, а с изменением ABI C++ между версиями VS.
Весь код C++ должен быть скомпилирован с одной и той же версией Visual Studio.
Компилятор не имеет функций "унаследованного режима" как таковых (за исключением небольшого количества незначительных переключателей, таких как wchar_t
поддержка и т. д.).
Если установлен VS2013, вы можете использовать IDE VS2015 и изменить набор инструментов для проекта (в настройках проекта).
Если ничего не помогает, вы также можете перекомпилировать QT с VS2015.
Примечание: ошибка, которую вы видите, заключается в том, что в ABI среды выполнения C++ произошли критические изменения (то, что он экспортировал, а что нет, и т.д.). Новые библиотеки DLL выполнения больше не экспортируют некоторые из механизмов исключений. Перекомпиляция цели с помощью соответствующей цепочки инструментов позаботится об этом.