终于有点点会了

这次的错误搞了我两天,我要发个日志记录一下T_T

 

之前没用过库,以为下下来之后,把头文件和cpp文件都加进工程里,搞好include就行。

库是在linux下写的,我与linux下专用的那些函数及头文件搏斗了很久,后来发现,库里面有用#ifdef判断当前系统的,根本不用我瞎折腾。。。

 

但是还是很多error,尤其是改了几个头文件后,VS2005几乎死掉,报了1900多个error全在gl.h里。。。。可是这是OPENGL的头文件啊怎么可能错。。。

而后百般搜索后发现,原来要自己编译,生成lib文件,再加到项目里,在代码中写上

#pragma comment(lib, "trimesh.lib")

或者在项目属性的链接-输入里设置。然后我意识到OPENGL和OPENCV都是这么搞的,突然感觉自己很小白。。。

 

glui库搞定了,但trimesh2库只提供了.a文件,VS用不了。后来发现有提供MSVC版本,下下来之后不能运行,因为是VS2008。。。

好在源代码里已经有了lib文件,我添加到项目里,于是变成了link error。

 

中间还有个小插曲,就是trimesh2带了freeglut用来替换glut,它通过自己写的glut.h来实现的。到底是#include <GL/glut.h>还是#include “GL/glut.h”,这导致了我的各种混乱,也是造成gl.h很多error的原因。

最后我直接将trimesh2里gl文件夹下的所有头文件拿去VC的目录下覆盖了。。。原来的glut.h丢了就丢了吧。。。

 

但link error还是没有解决,而后我想是不是链接库也是有顺序的,于是先链接gluit.lib再链接trimesh.lib,这次错误换了,只一条,unrecognized flag '-typedil' in 'p2',生成代码失败。

 

在网上百般寻觅发现有人说这是VS2005的问题,于是用同学的VS2008实验了一下,居然能运行了,能运行了!!我对着她的电脑内牛满面,这就是搞了我一天的错误么T_T

果断装VS2008,但满怀激动的跑程序,还是生成代码失败,Il mismatch between 'P1' version '20080116' and 'P2' version '20070207'。。。

好在遇到此问题的人不在少数,VS2008需要打一个SP1的补丁,我打上之后,程序便可以运行了。

 

只是结果不对。。 莔rz

开始是示例程序,每次读取face都失败,因为是空的。但是节点数量和坐标貌似正确。我换用一个正方体,发觉vertex数组的大小很奇怪,但输出的vertex.size()是8,坐标也都貌似正确。

这下彻底混乱了。这是trimesh2给的一段示例代码无比简单,怎么会不对呢?可对着lib又不能单步调试,眼看着输出结果和调试观察中的各种诡异不匹配,我真想一头撞死得了。

 

中间想过到底要继续试这个库,还是自己重写算了。两种都很浪费时间,我耗不起。

 

最后抱着试一试的态度编译了一把trimesh2,发现只生成了一个文件trimeshd.lib。想起以前QT的lib,好像是debug版都会在后面加个d。我心里突然又有了点希望,会不会我出现error是因为在debug下调用trimesh.lib。

果断换库,原本想着没有生成gluit.lib,不如把这个也删了,结果link error重现。只改了trimesh.lib,成功运行。

 

啦啦啦啦~作为一个下别人代码几乎从来不能成功运行的小白来说,我这次真的好开心啊~>_<

posted @ 2010-09-27 20:40  筱夏  阅读(2539)  评论(0编辑  收藏  举报