VS2008+QT4.8.7編譯QTAV問題和解決方法

VS2008+QT4.8.7編譯QTAV問題和解決方法


1.下載windows依賴文件QtAV-depends-windows-x86+x64.7z,爲了方便,直接將對應的頭文件、靜態庫和動態庫放在QT安裝目錄對應的位置;


2.設置系統環境變量(若是已配置請忽略):
    系統環境變量添加:新建系統變量,QTDIR->C:\Qt\4.8.7,值根據本身的安裝目錄而定;
    編輯系統變量path,在末尾加上;%QTDIR%\bin


3.生成VS2008工程文件:
運行Visual Studio 2008 命令提示,進入QTAV源碼根目錄,運行:
qmake -r -tp vc QtAV.pro

4.用VS2008打開目錄下上一部生成的QtAV.sln文件,按F7生成解決方案,遇到一下問題,依次解決便可:


4.1 M_PI_2未定義
在src/corelib/kernel/qmath.h中M_PI以後定義M_PI_2
#ifndef M_PI_2
#define M_PI_2    (1.57079632679489661923)  /* pi/2 */
#endifwindows

4.2 錯誤    1    fatal error LNK1181: 沒法打開輸入文件「..\.obj\QtAVd_win_x86\CopyFrame_SSE2.obj」    QtAV
搜索程序目錄下CopyFrame_SSE2.obj和CopyFrame_SSE4.obj,放到..\.obj\QtAVd_win_x86\目錄測試

4.3
AVPlayer.h
std::numeric_limits::max()
出現以下錯誤: 
warning     C4003:     「max」宏的實參不足       
error     C2589:     「(」     :     「::」右邊的非法標記
須要把max用括號括起來避免和windows定義的宏混淆
(std::numeric_limits::max)()
由於Windef.h中定義了
#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif
因此會產生編譯錯誤spa

4.4
項目: Player, 配置: Debug Win32 ------
1>正在連接...
1>LINK : fatal error LNK1181: 沒法打開輸入文件「E:/Qt/workspace/QtAV/QtAV/lib_win_x86\common.lib」
common.lib改成commond.libcmd

完=======================
補充一點:步驟一我將依賴的文件直接放到QT安裝目錄,是由於按照官方的編譯方法,在編譯的時候設置環境變量,可是不行,無奈才這樣作的。
如下方法我測試沒用,有興趣能夠試下:
VC: INCLUDE and LIB
set INCLUDE=E:\Qt\workspace\QtAV\QtAV-depends-windows-x86+x64\include;%INCLUDE%
set LIB=E:\Qt\workspace\QtAV\QtAV-depends-windows-x86+x64\lib;%LIB%源碼

windows cmd.exe environment without UNIX Shell command line
set CPATH=E:\Qt\workspace\QtAV\QtAV-depends-windows-x86+x64\include:$CPATH
set LIBRARY_PATH=E:\Qt\workspace\QtAV\QtAV-depends-windows-x86+x64\lib:$LIBRARY_PATHit

我在兩臺電腦上面編譯遇到的以上問題,都得以解決,但願能幫到你們。io

相關文章
相關標籤/搜索