关于QGLViewer的一些坑

丁叔叔就是喜欢在代码前线摸爬滚打,排坑的过程相当痛苦,成果出来的时候有趣而充满乐趣。有一种:啊,门打开了,可算可以松口气的感觉。

不这样用成就感麻痹自己的话,哪天真的会打穿电脑的吧……

 

下面是QGLViewer的排坑笔记。

为毛要搞这个东西呢?因为是CGAL库要用。CGAL需要用两个第三方库,一个是boost,另一个就是QGLViewer。结果一天下来,CGAL半点没学,倒是让我把这个宝贝捣鼓出来了。

本人使用QTCreator作为编译工具。版本为X64、Win8、VS13、QT5.5。请诸位小伙伴们千万不要搞错。不同版本的QT要对应好各自的编译器。

QT5.5的配置不多说了,网上一大堆。装好后再装Vsadd-in。这些都是必须的。

然后从官网上下载QGLViewer,传送门如下:

http://libqglviewer.com/installWindows.html

然后解压:一开始应该只有这几个东西:


我们直接打开QGLViewer下的pro进行编译,我们先不管其他的。


上面这个配置一定要选对哦,不然的话后续是连接不起来的。笔者的是VS3013的64位,没啥毛病。我们开始编译,点击左下角的大锤子开始。不出问题的话就会报下面这些错误了:

恩,可以说不出所料,自然不会这么简单22333333.

        笔者新加内容:当然,每个人用的每台机器都不一样,也许你到这里没有出现这些错误都是有可能的。这个和具体的每个人的配置不一样。而且笔者发现,QGLViewer 在QT5.9甚至QT5.6版本都是有问题的,应该就是opengl的配置问题。笔者分别尝试了用相同方法编译QGLViewer,分别在QT5.5,QT5.6,QT5.9下进行,环境在笔记本上的Win10和QTCreator。结果只有QT5.5是好用的。所以具体的方法也要你们自己摸索才行,没有绝对的教程。

还好笔者凭着超级丰富的经验,当下就判断出来,这个绝对是opengl库没配好。(这他妈的还用你说)哈~哈哈哈~哈哈哈哈哈哈。。。。。

笔者在pro中添加了如下救命代码,这个代码曾经解决了笔者的opengl无法使用的问题:

win32-g++:!contains(QMAKE_HOST.arch,x86_64){

    LIBS+="C:/ProgramFiles(x86)/MicrosoftSDKs/Windows/v7.1A/Lib/OpenGL32.lib"

}else{

    LIBS+="C:/ProgramFiles(x86)/MicrosoftSDKs/Windows/v7.1A/Lib/x64/OpenGL32.lib"

}

添加完了之后就长下面这个样子:

添加完之后还没完,我们要重新编译,但是这个时候如果编译个锤子的话,仍然会报相同的错误。其实是QT自己的bug,因为他不会自动刷新配置。这个时候我们只要将生成的文件删除然后再编译个锤子就行了。

图解见下面:

 

左边的图就是你需要删除的文件,位置就应该在上级目录,名字的话,每个人都不一样。

然后我们再重新编译。这回错误少了很多,然而还是没有过去。

笔者抑制住了打穿电脑的冲动,并开始冷静地分析。。。。2233333

从上图看到,这个错误仍然是opengl,这几个函数都是glu打头的,那么一定是少了glu库。而我们刚才添加的库是opengl32,那么在相应目录下也应该找到glu32才对!笔者立刻打开相应文件夹来看,果然,两个都找到了。


好,那接下来我们把这个库也添加进来呗:

好那么删除工程,重新编译!yes!过了。那么查看一下生成的文件:



恩,不错,完好无损。这个QGLViewer编译成功过后,笔者信心大增。

好嘞,别忘了,把Release和Debug中生成的这几个文件复制到C:\windows\System32

 

这一步复制非常重要,因为下面编译的时候会在这个路径下寻找这几个库。笔者在这中间也是折腾了好久。复制好了因该是上图这个样子。

下面编译这个玩意:designerPlugin,这个东西说白了吧,做成了一个控件,可以在VS编译器下进行拖放,也就是说可以跟其它Widget一样可以在窗体设计器中进行设计。真tm的人性化啊。好了我们不爆粗口。

把这个pro打开,哦,发现里面文件还是挺少的,好嘞,我们先来一波编译个锤子。同样的,不是啊么顺利,报的错误如下:


仔细一看,还是opengl出了问题,好嘞,继续刚才的做法,添加opengl的两个lib即可,然后删除生成的文件,重新编译。

 

诶,过了。非常开心。好嘞,我们先不管这几个库,先来跑个example试试。

首先打开一个animation编译看看,诶,别急,打开之后发现左下角除了锤子都是灰色的,哈?这个什么鬼?点一下锤子看看,诶,编译成功了,然而不能运行。。。

这个大概就是解析出了问题。一般来讲这个问题,只要我们重新新建一个工程然后拷贝相应的h文件和Cpp文件过去就行了。然后作者抱着尝试的心态弄了一下,新建了一个工程,向新建工程的pro中添加了一些代码如下:


其实在这之前比这还做了一件事就是把lib和dll全部拷贝出来放到一个单独的文件夹中,当然,h文件也拷贝出来了。如下图所示:

里面分别装着:

 

恩,就酱。或者你不想这样做的话也没有关系,只要包含相应的lib所在目录就行了。当然了,由于用到了opengl,你必须在pro中添加刚才的那两行救命代码,还有一些opengl必备的组件才行:

那么接下来我们编译然后运行程序:

哎呦呦,出来了。有点小激动。

 

其实有的时候自己也不知道前方的程序会遇到什么问题,但是只要洗了功夫,一定可以得到解决。即便是没有解决,自己也可以通过这些事情锻炼解决问题的办法,这才是最重要的。

本次编译过程花费攻共计5个半小时。再加上文档编写,一共6个半小时。圆满成功。当然,前方的路还很长,同志仍需努力。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值