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. 运行效果如下:

     

 

posted @ 2018-03-23 00:36  r0xFED  阅读(2120)  评论(4编辑  收藏  举报