2015-10-14 169 views
0

我想在Microsoft Visual Studio 2015中使用Qt 5.5。但是,使用Qt的Microsoft編譯器的最後一個兼容版本是MSVC2013。因此,我想告訴Visual 2015使用舊版本的Microsoft編譯器來編譯「傳統」模式。在Visual Studio 2015下使用Microsoft Visual C++ 2013編譯

如何做到這一點?

當我使用MSVC2015我得到這個錯誤:

Gravité Code Description Projet Fichier Ligne 
Erreur LNK2019 symbole externe non résolu "__declspec(dllimport) char const 

* __cdecl std::_Winerror_map(int)" ([email protected]@@[email protected]) 

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 " ([email protected][email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) helloworld C:\Users\roman\Documents\QtTest\bin\qtmaind.lib(qtmain_win.obj) 1 

我想這是因爲Qt的庫被編譯爲MSVC2013

+0

您是否嘗試更改「項目屬性」 - >「常規」 - >「平臺工具集」? – stijn

+0

@stijn我只在這個下拉列表中有Visual Studio 2015 ... –

回答

0

您正在嘗試使用爲VS 2013構建的Qt以及使用VS 2015構建的代碼。這絕不會起作用 - 它甚至不是用於Qt的問題,但是C++ ABI在VS版本之間變化。

所有C++代碼都必須使用相同的Visual Studio版本進行編譯。

0

編譯器有沒有「傳統模式」功能,這樣(的一小撮之外次要開關,這樣的支持等)。

如果安裝了VS2013,則可以使用VS2015 IDE並更改項目的工具集(在項目設置下)。

如果一切都失敗了,你也可以用VS2015重新編譯QT。


注意:您看到的錯誤是因爲有在C++運行時ABI breaking changes(什麼出口,而不是等)。新的運行時DLL(s)不再導出一些異常機制。用相應的工具鏈重新編譯目標將處理這個問題。

+0

嗨,ho重新編譯VS2015的Qt?它不會出現在安裝程序和維護工具上 –

+0

您可以下載源代碼並按照其指導進行操作。這裏還有其他的在線教程。 – Niall