Qt-5.10.1 Windows MinGW 下QwtPlot3D的編譯及其示例的運行


      因工作需要,需要在Qt下建立一個顯示3D曲線的模塊。在試驗各種方案的過程中,發現這個第三方庫。雖然根據《QWT3D 之 三維動態曲線的實現》(地址: https://blog.csdn.net/caoqiang2006/article/details/53038441)修改QwtPlot3D模塊,但是依然無法繪制簡單的3D曲線,故放棄此方案(不過這個模塊的3D效果也有點過時了, 請看最后示例運行效果截圖)。

      現保留一篇QwtPlot3D編譯文章,以供紀念之。參考了《qwtplot3D安裝——終結解決方案(YOUYOU版)》(https://blog.csdn.net/youhaipeng/article/details/8201052), 謝謝此博文的作者分享編譯過程。

      注: 根據QwtPlot3D官方網站(http://qwtplot3d.sourceforge.net/web/navigation/feature_frame.html), QwtPlot3D已停止維護, 且僅支持Qt3和Qt4版本。 

     一、編譯QwtPlot3D庫。

     1. 進入https://sourceforge.net/projects/qwtplot3d/files/qwtplot3d/下載最新版QwtPlot3D, 不過最新版依然是2007-06-25發布的0.2.7版......

     2. 解壓qwtplot3d-0.2.7.zip至任意磁盤根目錄下(注意: 由於Qt項目編譯不支持中文路徑和帶空格的路徑, 所以...)。我把它解壓到了D盤根目錄下。

     3. 打開D:\qwtplot3d\,將會看到qwtplot3d.pro文件, 使用Qt Creator打開之。

     4. 編譯之, 報錯: error: Makefile.Debug: No such file or directory, 如下圖所示:

    

     5. 打開qwtplot3d.pro文件,修改該文件部分內容:  win32:TEMPLATE= vclib   修改為: win32:TEMPLATE= lib。

     6. 再次編譯之, 報錯, 注意, 這里和參考博文的錯誤信息不一致了, 錯誤來自OpenGL or GLU, error: 'gluErrorString' was not declared in this scope
   err = gluErrorString(errcode); 如下圖所示:

     

     7. 再次打開qwtplot3d.pro文件,新增語句: LIBS += -lopengl32 -lglu32。同時需要根據錯誤信息在qwt3d_openglhelper.h添加#include "GL/glu.h"。

     8. 再次編譯之, 這個時候就完成編譯了, 不會報錯。打開D:\build-qwtplot3d-Desktop_Qt_5_10_1_MinGW_32bit-Debug\lib目錄即可發現編譯完成的libqwtplot3d.a和qwtplot3d.dll。

     二、運行QwtPlot3D的Example

     1. 進入D:\qwtplot3d\examples\, 用Qt Creator打開examples.pro文件。

     2. 編譯之, 報錯: error: Makefile.Debug: No such file or directory。如下圖所示:

        

       3. 打開在examples目錄下的common.pro文件。刪除語句:TEMPLATE = vcapp和 QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt。

       4. 再次編譯之, 報錯: error: ../../lib/qwtplot3d.lib: No such file or directory。這時需要再次打開common.pro文件, 修改語句:LIBS+= ../../lib/qwtplot3d.lib  修改為:LIBS += $$PWD/lib/libqwtplot3d.a。同時把之前編譯完成的D:\build-qwtplot3d-Desktop_Qt_5_10_1_MinGW_32bit-Debug\lib目錄復制到examples目錄下。

       5. 再次編譯, 報錯, 提示未能鏈接OpenGL庫, 如下圖所示:

       

       6. 明顯, 在common.pro文件中新增LIBS += -lopengl32 -lglu32

       7. 再次編譯, 還是報錯: ...\designerworkaround.h:4: error: QtGui/QMenu: No such file or directory, 這是由於Qt4下QMenu等被划歸QtGui模塊下, 而在Qt5中QMenu等被划歸到QtWidgets下造成的。根據錯誤信息, 打開designerworkaround.h文件並修改#include <QtGui/QMenu>等為#include <QMenu>等即可。

       8. 再次編譯, 沒有出現任何錯誤, 在運行examples之前, 需要把之前編譯出的qwtplot3d.dll復制到examples的build目錄下的bin目錄里。如下圖所示:

       

      9. 運行效果如下:

     

 


免責聲明!

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



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