問題及解決:
在進行Qt的qmake和vc的nmake時,後者發現找不到<stddef.h>檔案。進行了一些嘗試後沒能解決,只是顛三倒四的在VC環境下下可以編譯成功了。
今天又進行QT學習,仍然發現了這個問題,於是再搜搜。突然發現了這篇文檔,很不錯,如果當時能夠發現,問題可能早就解決了。
其實就是:重新註冊一下VC的環境變數,開啟cmd控制台,進入D:\Program Files\Microsoft Visual Studio\VC98\Bin目錄,運行VCVARS32.BAT。
注意的地方就是如果批處理中使用的是目錄的簡寫program~1之類的,最好替換為真實完全路徑,否則可能是因為安裝的比較早,這個目錄簡寫已經不適用了。
我是通過這個貼開啟思路的:http://blog.sina.com.cn/s/blog_43ca06360100kbh0.html,表示感謝。
但後來又發現了這個貼更好:http://hi.baidu.com/shuiyuan2004/blog/item/da75d124ee2c7a054d088d64.html
附上原文進行感謝,並對早期準備不足、心理層次不夠表示歉意。
唉,有時候雖然文檔說的很好,但是自己看了幾遍卻仍然認識不到,沒辦法,過程嘛就是這樣,下次注意。
附原文如下:
Qt4.3.4+VC++6.0在WINDOWS下安裝配置
關於QT
Qt是一個多平台的C++圖形化使用者介面應用程式架構。
它提供給應用程式開發人員建立藝術級的圖形化使用者介面所需的所用功能。
Qt是完全物件導向的很容易擴充,並且允許真正地組件編程。
自從1996年早些時候,Qt進入商業領域,它已經成為全世界範圍內數千種成功的應用程式的基礎。
----------------------------------------------------------------------------------
版本:qt-win-opensource-4.3.4-mingw.exe
或:qt-win-opensource-src-4.3.4.zip
exe版本,(安裝時需要指定mingW的路徑,沒有的話,應該要點擊下載到本地並安裝,缺少的話不知道會不會有問題),點擊下載安裝mingW,非常的慢~
安裝成功之後,還是需要進行編譯,否則會缺少某些lib或dll檔案。
1、安裝。
點擊安裝,選好路徑(如設為:D\:QT),點擊下載mingw,然後是漫長的等待~
2、編譯環境。
命令提示字元,
D:
cd QT\4.3.4
configure
根據提示,輸入nmake,然後又是漫長的等待~
3、設定環境變數。
QMAKESPEC = win32-msvc
QTDIR = D:\Qt\4.3.4
path = %QTDIR%\bin
這樣,如果要修改QT的路徑,只要改QTDIR的值就可以了。
至此,QT環境就安裝好了。
4、測試
下面用一個小程式測試一下
建立檔案名稱為hello.cpp,輸入如下代碼:
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello World!");
label->show();
return app.exec();
}
儲存到某個空檔案件中。
然後,開啟命令提示字元,進入hello.cpp的檔案夾,運行:
qmake -project
qmake
nmake
就會在debug檔案夾下產生一個.exe檔案。
也可以使用qmake -t vcapp -o hello.dsp hello.pro,來產生dsp工程檔案,在VC6環境中開啟,進行編譯和調試。
如果在過程中遇到問題,可以參考下面的內容:
--------------------------------------------------------------------------------(關鍵點)
1)如果編譯時間出現打不開stddef.h、string.h之類的錯誤,說明VC環境路徑沒有設定好。
運行cmd.exe,然後切換到路徑到VC路徑下的bin,運行vcvars32.bat,設定vc6.0編譯環境的路徑。
如果問題還是沒有解決,可以用記事本的方式開啟vcvars32.bat,看其設定了哪些環境變數,然後手動添加到環境變數中。
如:
VSCommonDir=D:\program files\VC++\Common\
MSDevDir=D:\program files\VC++\Common\msdev98
MSVCDir=D:\program files\VC++\VC98
PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";
INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;
LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;
如果是vcvars32.bat中路徑與實際安裝的路徑不符的話,還可以修改vcvars32.bat,再運行,而不需硬性的添加到系統內容變數中。
--------------------------------------------------------------------
2) 如果編譯期間出現這樣的錯:fatal error C1083: Cannot open include file: 'uxtheme.h': No such file or directory
提示Uxtheme.h 和Tmschema.h找不到,而Schemadef.h是在Tmschema.h裡調用的,所以還需要另外三個檔案,這在VC6裡面沒有,包含在 Windows PlatformSDK安轉了Visual Studio 2003或 Visual Studio 2005 中都有PlatformSDK。若安裝過,就不必費盡去下載385.0 MB的SDK了,預設安裝的話三個檔案都在
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include
(Uxtheme.h 中定義了在向控制項添加外觀風格的步驟中以及在相應的程式碼範例中所引用的 UxTheme API;Tmschema.h 中定義了各個類。
可以到這裡下載http://www.cnblogs.com/xcvm/archive/2006/03/08/346013.html
把這三個檔案加到vc的include檔案夾下,就可以通過編譯了。
--------------------------------------------------------------------
3)運行nmake時,如果提示包含的標頭檔或庫檔案找不到,先確定環境變數是否已經設定好,然後試著在VC中設定包含QT的目錄:(通常設好了環境變數,就不會出現這樣的問題了)
工具->選項->目錄:
include files:D:\Qt\4.3.4,D:\Qt\4.3.4\include
execute files: D:\Qt\4.3.4\bin
library files: D:\Qt\4.3.4\lib
如果還是有錯,可以開啟產生的Makefile.debug或Makefile.release檔案,查看INCPATH 項中是否已經包含標頭檔所在的目錄,查看LFLAGS 項中是否已經包含庫檔案所在的目錄,沒有的話自行添加,再重新運行qmake。
--------------------------------------------------------------------
4)QT版本不同,程式會有些許不同。
上面的例子在QT3.3.2中,就會提示找不到檔案QApplication,將包含標頭檔改成<qapplication.h>;
QLabel *label = new QLabel("Hello World!")
也應改成QLabel *label = new QLabel("Hello World!",0)
--------------------------------------------------------------------
5)在編譯qt-win-opensource-src-4.3.4.zip版本的時候,遇到這樣的問題:
link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"..\bin\qmake.exe"
@C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nma02552.
metamakefile.obj : error LNK2001: unresolved external symbol "public: __thiscall DspMakefileGenerator::DspMakefileGenerator(void)"(??0DspMakefileGenerator@@QAE@XZ)
..\bin\qmake.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
先跑到qmake檔案夾下,運行了一下nmake,產生了qmake.exe檔案,並複製到了bin中,再到上層目錄中運行qconfigure.bat msvc,似乎就沒問題了,真是奇怪~
--------------------------------------------------------------------
6)如果在VC中進行調試,最好先用qmake -t vcapp -o hello.dsp hello.pro,之類的命令列產生工程檔案,自己在VC中建立工程或添加檔案的話,很可能產生“無法引用外部符號”之類的錯誤。