鉴于准备申请的学校针对本科生的PRP项目的需要,在网上找现在比较流行的三维交互程序开发的资料,决定使用Open Inventor(OIV)作为三维接口。也不能让他们上来什么都自己整啊,我就装上VS2005、QT这些必备物件再找OIV,Coin3D的OIV为开源软件,再遍找Crack的TGS OIV不到时选择了它。谁知上来就看似不顺,从官网下载它竟然只有2、3K的速度。不管怎么着,总算下下来了。在VS2005里布署它倒是没出啥问题,可问题就在需要运行其一个基本类似Helloworld的程序时展开了。
这个程序需要include一个win目录下的.h文件,可我找了coin3d的include目录竟然找不到win目录~ 凭着直觉,在其命名的soWin.h文件名的启发下应该是还有一个程序,果不其然,在Coin3D的网站下载中找到了这个叫做sowin的程序,下载其any platform的版本,同样超慢的速度。
下载完成后解压,在其build->msvc8->src里找到了win目录,拷贝到coin的include目录下再试着编译,可它接二连三地找不到一些文件,不管怎么着,我都在各个包含同样文件名但紧接着文件名的版本号不同的文件拷贝后改名,这样也算一路过关斩将,只是在找sowin的lib文件时遇到了问题,不过我把下载的sowin用vs2005编译,搞定一堆问题后尽管还是编译不了,不过lib文件竟然有了,惊喜过望地把lib文件拷到了coin的相应目录下。就这样,它竟然编译通过。
可它却给我在弹出来exe的黑console窗口后就弹出一个错误窗口,上写一错误代号 0xc0150002 。这可搞糊涂我了,难道是我OpenGL装的有问题,造成底层三维出不来?不管三七二十一先baidu一下这个错误号,网上大部分说是VS2005的SP1补丁没装,没装就下个装上喽。我接二连三下载几个装,不过还是那个问题,后来致使标准的400多M的sp1补丁由于版本不对而不能安装。接近心灰意冷的我干脆给它来了个重启,看能否有转机。
就在我吃完晚饭回来打开项目重新编译,冒出来一个不同的错误窗口,说是sowin1d.dll找不到,这下好啊,看来确实是SP1补丁的问题。到网上下来个sowin1d.dll,尽管它文件名上说是for VC6的,不过我当下认为dll反正就是定义好的黑盒子,有输入输出就好啦。可就这么又把for VC6的coin2d.dll一块拷进去后问题出现了,不过这次弹出的对话框倒是内容丰富,如下图:
看来这个是版本问题,不过前面我用重命名的方式改了那么多文件,后有怎样怎样地做了一堆东西,什么时候版本错的还真是挺难一步到位地找到症结。不过第四段那个它说的最可能的错误给了我建议,应该是SoWin的版本出了问题,我在SoWin上几乎没动什么,只有最后拷贝了for VC6的dll进来。那问题一定就出在这个dll上啦。可怎么才能找到这个dll呢?
我放弃了到网上找现成的下来,还是在已有的SoWin源文件上编译出来吧。带着几分不情愿又编译起SoWin来,和以前我放弃时同样的错误,不过这次的我是有备而来,就是版本的错误了。再加上上图里说的Linked with ***,那估计是项目Link的设置出了问题,再加上刚才在网上偶尔瞟到的一句“SoWin需要Coin来干吗干吗”,看来SoWin和Coin的关系不一般,一定需要Coin来做Link,果不其然,在项目属性->链接器->输入的附加依赖项中安静地躺着$(COINDIR)\lib\coin3d.lib,而这里的coin3d就是我先前从旧版本的Coin里拷贝到Coin最新版的lib目录里的!!
问题就出在这里了,把3改成2,编译SoWin,成功了!!而且说已经成功布署了sowin1d.dll,那一定布到coin里了,果然,coin的bin目录下的sowin1d.dll的修改日期已经变成了2分钟前,也就是SoWin编译成功那会!
气也没敢喘,生成我的Helloworld项目吧。。。哇塞!那会的兴奋啊,成啦!一个和网上相同不过看着更美的界面赫然弹了出来,一个小圆锥体安放正中。手舞足蹈!毕竟我这个对C++不咋熟的人用了两天时间终于调通了从VS2005到最后效果这所有的安装、布署过程,那个问题一堆一堆的,错误层出不穷,不过咋说也算搞定了。接下来就要看我编程能力啦,尽管基础不咋OK,不过也是小增了把自信,相信不成问题啦!
小边开始带本科生了?
是啊,现在正在招兵买马过程中,呵呵!
SoWin是将Coin API和Windows开发工具(MSVC)绑定的工具,应先安装coin,再安装SoWin(实际是生成Sowin VC项目),生成完了就产生了4个文件:sowin1.dll,sowin1d.dll(这两个供开发动态链接的程序使用);sowin1s.lib,sowin1sd.lib(这两个供开发静态链接的程序用)。这四个文件在项目生成后被自动复制到coin安装目录对应的位置。到此为止才能利用SoWin(或者说Coin)来开发你的程序。别忘了在VC中设置目录(include,lib)。
本人也对三维可视化感兴趣,有空多交流。
嗯。我当时就是用vs05编译了遍sowin就把那4个文件发布好了。最近重装机器,只需要在include、lib和环境变量里设置就行。
您有没有尝试vs2008+coin3d3.1.3+soWin1.5.0下进行开发?
没有,没试过,也有挺长时间没碰它们了
好的,谢谢!