Windows下qwtplot3d编译(win7+qt5.7.1+vs2013)

qwtplot3d编译

目前在学习3d相关技术,发现qwtplot3d这个3d图形库,到官网下载(http://qwtplot3d.sourceforge.net/web/navigation/feature_frame.html),我下载的0.2.7版本。
我用的电脑是window7 系统,开发工具是qt5.7.1+vs2013。在网上参考了一篇文章(http://blog.sina.com.cn/s/blog_668aae780101kqcz.html),但是在我编译时貌似有些不一样,在此记录一下我的编译步骤以及遇到的问题。

首先编译qwtplot3d库

1、用qt create 打开工程后,qmake失败
解决方法:修改qwtplot3d.pro文件中“win32:TEMPLATE= vclib”改为“win32:TEMPLATE= lib”
2、执行清除->qmake->编译出现错误: 错误:'gluErrorString' was not declared in this scope...
解决方法:在错误的文件头部添加#include "GL/glu.h"
3、再编译出现错误:无法解析的外部符号"_imp__glBegin@4"等
解决方法:在pro文件中添加opengl库的引用LIBS+= -lopengl32
4、再清除->qmake->编译,成功生成qwtplot3d.dll,如果发现没有生成.lib文件,就在
pro文件中define后面 添加Q_WS_WIN ,再次清除->qmake->编译后会成功生成qwtplot3d.dll和qwtplot3d.lib

注意:如果遇到’stderr’ was not declared in this scope 和 ‘fprintf’ was not declared in this scope错误就在产生错误的文件头部添加#include (我没遇到这个问题)

再编译qwtplot3d例子

1、打开common.pro,修改几个地方,如图:
Windows下qwtplot3d编译(win7+qt5.7.1+vs2013)_第1张图片
2、清除->qmake->编译,弹出错误:找不到../../lib/qwtplot3d.lib
解决方法:将qwtplot3d生成的lib文件夹目录复制到qwtplot3d.pro的同目录下
3、再次编译,报error LNK2001: 无法解析的外部符号"public: static struct QMetaObject const Qwt3D::SurfacePlot::staticMetaObject"
解决方法:找到报错的文件的头文件,找到继承SurfacePlot的类,将Q_OBJECT禁用再次编译就成功了

运行效果:
autoswitch
Windows下qwtplot3d编译(win7+qt5.7.1+vs2013)_第2张图片

axes
Windows下qwtplot3d编译(win7+qt5.7.1+vs2013)_第3张图片


特殊问题:
编译成功后 我运行example中的程序,发现运行出来的看不到画面,一片黑。我怀疑是opengl库有问题,于是我找个OpenGL的例子试试,也是黑的,但是我放到另一台电脑上运行有画面,如下图:
Windows下qwtplot3d编译(win7+qt5.7.1+vs2013)_第4张图片
黑的画面的系统是win7的,有画面的是win10,于是我找另一台win7电脑,是可以的,难道是我显卡驱动有问题?于是我更新显卡驱动,结果还是不行。那我重装系统。。。。。。。(win7)
还是不行。再重装(win10)还是不行。看来问题与系统无关,怀疑是电脑问题,然后发现我的电脑是双显卡的,我就到bios中查看设置,当前设置的是自动切换,我把它设置成独立显卡再启动后,发现程序居然可以看到画面了...真是无语了,害我装了一天系统。
在此记录下来,如果有人遇到和我一样的问题,可以参考一下。


你可能感兴趣的:(3d)