關於QT版本的安裝配置的一些困惑


大概是之前安裝和使用QT太順利了,什么都沒注意就開始使用了。在使用VS2012開發Qt5.31的程序一段時間以后,雖然好用,但是發現其編譯的程序不能在XP上使用,要打補丁才行。不僅VS2012本身要打補丁,而且我使用的一個庫也要有相應的區別選擇,實在是夠麻煩的。何況VS2012本身不能在XP下使用,所以思量着使用VS2005或者VS2008做開發吧,實在沒辦法VS2010也行,至少家里的XP老機子能用。沒想到問題來了:


1. 之前裝的是QT5.31 for VS2012,因此使用VS2010怎么編譯都報錯,害得我以為VS2010有問題,卸載后重裝依然如故,浪費我至少2小時。原來是QT庫的不同,網上另外下載QT5.31 for 2010安裝即可。

2. VS2012自身太霸道,不知道怎么回事覆蓋了我VS2010的默認C++編譯選項,按照這篇文章改回來即可:
http://stackoverflow.com/questions/13663898/specified-platform-toolset-v110-is-not-installed

3. QT5 Add-in 雖然可以安裝給VS2008使用,但是使用這個插件打開任何一個.pro文件都會出現莫名其妙的轉換失敗問題。而且我后來發現沒有QT 5.31 for VS2008的版本,而且網上查了一下QT 5.0 5.1 5.2版本都沒有專門的for 2008版本啊,莫名其妙提供這個安裝選項干什么。但是隱約記得強行指定QT 2012庫也可以編譯,以后再回來確認。今天急着要做正式開發。

4. 我自己之前使用VS2005編譯了一個QT 4.53的庫,很好用,各種書籍的例子都暢通無阻。但是新建一個工程,編譯運行沒有任何警告。但是把工程庫指向QT4.86的時候,就會發出警告,提示宏定義重復了:
1>c:\qt\4.8.6_2008\include\qtcore\../../src/corelib/global/qconfig.h(41) : warning C4005: 'QT_LARGEFILE_SUPPORT' : macro redefinition
1> command-line arguments : see previous definition of 'QT_LARGEFILE_SUPPORT'
使用VS2008新建一個空工程,使用同一個QT4.86庫就沒有任何問題。

------------------------------------------------------------------------------------
總結:
1. VS2005 + Qt4.53用來學習書上的例子,真是絕美。Qt 4.53是2009年年末發布的,做一般性的工程大概也夠了,誰會需要那么多QT新特性啊,一般越是小白越起勁,人家KDE那么大的天文工程都使用QT4做出來了。
這是QT5的新特性列表:http://qt-project.org/wiki/Qt-5Features
2. VS2008 + Qt4.86做QT4的工程,也是沒有任何問題,連個警告都沒有。
3. VS2010 + Qt5.31做QT5的工程也不錯,就是XP上運行太慢,另外別忘了給它裝對應的QT5.31 for 2010
4. VS2012 + Qt5.31本來一直都覺得很好用,但是需要通過打補丁,而且是各種補丁,也能解決所有的開發與配置問題,但我不願意折騰,何況也不能在XP下運行,所以放棄。

我目前這個工程打算遷移到方案2試試,不是自己編譯的庫,發布的時候應該更可靠一些。除了未來有可能會使用JSON,其它方面不需要任何新特性。如果開發遇到問題,就轉到方案3。趕緊行動~

------------------------------------------------------------------------------------

補充1:VS2012使用QT 5.31 for 2010沒有任何問題!看來VC的向下兼容做得不錯。

補充2:
使用VS2008編譯QT程序的時候,總是碰到這樣的錯誤:
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR90D.dll)
在這里
Project Property->Configuration Properties->Linker->Input->Ignore Specific Library
填上:
libcmtd.lib

補充3:
至今沒搞明白,如何靜態編譯QT的應用程序(不是QT自身,但這樣有可能需要靜態編譯QT?),可能是這樣設置:
Project Property->Configuration Properties->C/C++->Code Generation->Runtime Library
設置:
Multi-threaded (/MT)
同時忽略(同補充2):
LIBCMT.lib
(注意,Debug和Release版要分別設置一遍)

補充4:
如何簡單發行QT的應用程序,使之不再依賴VS開發環境(加上VC的2個DLL應該還是可以的),可能是這樣:
http://bbs.csdn.net/topics/310079403
http://support.microsoft.com/kb/148652

補充5:
好好的程序,Debug沒問題,Release版發行程序怎么會缺了一部分資源圖片呢?

補充6:
1>c:\qt\4.8.6_2008\include\qtcore\../../src/corelib/global/qconfig.h(41) : warning C4005: 'QT_LARGEFILE_SUPPORT' : macro redefinition
1> command-line arguments : see previous definition of 'QT_LARGEFILE_SUPPORT'

在VS2008中也出現了,要想辦法去掉。
后續:找到qt\src\corelib\global\qconfig.h文件(雙擊編譯錯誤就可以找到),找到這行:
#define QT_LARGEFILE_SUPPORT 64
替換成:
#ifndef QT_LARGEFILE_SUPPORT
#define QT_LARGEFILE_SUPPORT 64
#endif


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM