QT5.3+VS2013+QCustomPlot+QwtPlot+QwtPlot3D使用環境配置


VS安裝QT后運行環境所需配置

    安裝好QT和QT在VS下的插件之后:

1.打開VS,找到QT5→QT Option,如下:

2.配置電腦環境變量,在系統變量→Path下增加QT的動態庫所在文件夾,也就是bin文件夾路徑:

QT使用QCustomplot庫

    官網下載:http://www.qcustomplot.com/

    直接下載QCustomplot,然后把.h文件和.cpp文件添加到工程即可。

QT使用QwtPlot庫

    官網下載:http://qwt.sourceforge.net/

    打開VS2013(或者其他版本)的VS命令提示符,如下:

    然后轉到qwt文件夾,輸入如下命令開始編譯:

cd E:\QWT

qmake qwt.pro

nmake

----------漫長的等待-----------

cd designer

qmake designer.pro

nmake

----------漫長的等待-----------

cd ..

cd examples

qmake examples.pro

nmake

----------漫長的等待-----------

編譯完成之后,開始配置:

(1)將E:\QWT\lib下的qwtd.dll、qwt.dll拷貝到QT路徑的bin文件夾下,將qwtd.lib、qwt.lib拷貝QT路徑的lib文件夾下。

(2)將E:\QWT\designer\plugins\designer目錄下的qwt_designer_plugin.dll和qwt_designer_plugin.lib拷貝到QT路徑的\plugins\designer目錄下。

(3)將E:\QWT\src目錄下的所有.h和.cpp放入一個空文件夾QWT中,再將該文件夾拷貝到QT路徑的include目錄下。

(4)在VS中C/C++->預處理器:預處理器定義里面添加QWT_DLL。不添加這步,使用時編譯會報錯,因為qwt采用動態庫拋出類的方式將QwtPlot供使用者使用,必須定義QWT_DLL才能使用qwt的拋出類。(注意,如果使用靜態編譯的qt庫,並用靜態版本的qt的qmake生成的qwt靜態庫的話,是不需要QWT_DLL的,添加了反而會報錯)

QT使用QwtPlot3D庫

  從https://github.com/sintegrial(http://sintegrial.com/ 已經失效)下載最新版的QwtPlot3D,這個不是官方原版,是另一個團隊修改的,支持QT5.3.

  解壓文件到某個路徑,注意,路徑不能有中文。

  1.找到src文件夾,打開src.pro,用qt creater分別在debug和release模式下進行構建,分別會得到兩個qwtplot3d.lib,一個是debug版本,一個是release版本,為了區分,把debug版本得到的命名為qwtplot3dd.lib(注意,這兩個庫是靜態庫,不同於動態庫里面的lib,所以不需要dll)。

  2.把qwtplot3dd.lib和qwtplot3d.lib拷貝到QT路徑的lib文件夾下面。

  3.把qwtplot3d的所有頭文件拷貝到一個文件夾Qwt3D中,再把這個文件夾拷貝到QT路徑的include目錄下。

  4.之后的設置就是在VS的鏈接器->輸入->附加依賴性中添加qwtplot3dd.lib或者qwtplot3d.lib。

QT靜態發布

  首先參考此文http://blog.csdn.net/wwkaven/article/details/37668859,獲取編譯的結果之后。然后把環境變量中的path添加編譯結果的bin路徑,對qwt采用動態編譯類似的方式編譯(注意,此時不要存在兩個qmake的路徑,雖然我沒有測試,但是可能會有問題,所以最好一次只有一個qmake的環境變量),不過此時需要修改qwtconfig.pri里面的一項,就是把帶DLL的那一行注釋掉。然后到qwt文件夾下qmake,nmake。

  而qwtplot3d無法進行靜態編譯,所以為了發布程序,把所有的.h文件盒.cpp文件全部放到項目中去。

  如果你原有的程序是用動態版本的qt創建的,在VS中更改到靜態版qt需要先設置qt5->qt option,里面添加動態版的路徑,然后右鍵項目:

 

  進行change solution's ..,選擇動態版的qt。此時程序就會更新QTDIR,否則不會更新QTDIR。

  之后,就需要修改附加依賴項啥的,首先是附加庫目錄,需要根據情況加入plugin/文件夾下的模塊路徑,其中plugin\platforms是必須的,其他視情況而定,

  對於插件,不僅要導入lib,還要進行插件聲明:

#include <QtPlugin>

#ifdef _DEBUG    //Debug mode
#pragma comment (lib,"Qt5PlatformSupportd.lib")
#pragma comment (lib,"qwindowsd.lib")
#pragma comment (lib,"windowsprintersupportd.lib")
#pragma comment (lib,"qoffscreend.lib")
#pragma comment (lib,"qminimald.lib")
#pragma comment (lib,"qmngd.lib")
#pragma comment (lib,"qsvgd.lib")
#pragma comment (lib,"qicod.lib")
#pragma comment (lib,"qjp2d.lib")
#else            //Release mode
#pragma comment (lib,"Qt5PlatformSupport.lib")
#pragma comment (lib,"qwindows.lib")
#pragma comment (lib,"windowsprintersupport.lib")
#pragma comment (lib,"qoffscreen.lib")
#pragma comment (lib,"qminimal.lib")
#pragma comment (lib,"qmng.lib")
#pragma comment (lib,"qsvg.lib")
#pragma comment (lib,"qico.lib")
#pragma comment (lib,"qjp2.lib")
#endif

Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
Q_IMPORT_PLUGIN(QICOPlugin)
Q_IMPORT_PLUGIN(QJp2Plugin)
Q_IMPORT_PLUGIN(QSvgPlugin)

  然后,如果是直接用靜態版生成的項目,不需要對鏈接器->輸入進行修改,而如果是從動態版更改到靜態版,需要檢查此項,一般會需要如下:

kernel32.lib
user32.lib
shell32.lib
uuid.lib
ole32.lib
advapi32.lib
ws2_32.lib
gdi32.lib
comdlg32.lib
oleaut32.lib
imm32.lib
winmm.lib
qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
Qt5PrintSupport.lib
Qt5OpenGL.lib
opengl32.lib
glu32.lib
qwt.lib
Qt5PlatformSupport.lib
Qt5Svg.lib

  最后運行編譯即可。


免責聲明!

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



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