在Visual studio 2008里安装最新的Coin3d(open inventor)

来源:互联网 发布:迅雷下载后网络异常 编辑:程序博客网 时间:2024/05/09 10:23

摘自:http://jialinwang.blog.163.com/blog/static/101402691200810106265378/


今天在电脑上安装了一个open inventor软件Coin3d。为了以后安装方便和他人参考,下面介绍一下安装过程:

1、准备工作

(1)安装微软的 Visual studio 2008;

(2)下载 Coin-3.0.0-bin-msvc9.zip,下载地址:http://ftp.coin3d.org/coin/bin/win32/Coin-3.0.0-bin-msvc9.zip

(3)解压上述文件到一个目标文件夹,我的为 C:\Coin3D-3

(4)下载 SoWin,这个部件没有装在前述压缩文件中,要单独下载,下载地址:http://ftp.coin3d.org/coin/src/all/SoWin-1.4.0.zip

(5)解压上述文件到一个目标文件夹,我的为 C:\SoWin-1.4.0

2、为计算机设置环境变量 COINDIR=C:\Coin3D-3,添加 PATH=C:\Coin3D-3\bin

3、在Visual studio 2008中,通过“工具”-》“选项”-》“项目和解决方案”-》“VC++目录”,增加几个目录路径:

(1)包含文件:C:\Coin3D-3\include

(2)库文件:C:\Coin3D-3\lib

(3)可执行文件:C:\Coin3D-3\bin

4、在Visual studio 2008中,打开 C:\SoWin-1.4.0\build\msvc8 文件夹中的解决方案 sowin1.sln,通过“项目”-》“属性”-》“配置属性”-》“链接器”-》“输入”,将“附加依赖项”的“$(COINDIR)\lib\coin2.lib”

(与Release版本对应)和“$(COINDIR)\lib\coin2d.lib“(与Debug版本对应)中的2均改为3

5、分别编译sowin1的Release版本对应Debug版本。就会自动将SoWin装到C:\Coin3D-3中

6、为了方便起见,可编写一个头文件 Use_Coin3d_Dll.h(我放在E:\\use_coin3d下,免得无意中被删掉) :

#ifndef Use_Coin3d_Dll_h__
#define Use_Coin3d_Dll_h__

#pragma warning(disable:4819)

#define SOWIN_DLL
#define COIN_DLL

#ifdef _DEBUG  //调试版本连接
 #pragma comment(lib,"coin3d.lib")
 #pragma comment(lib,"sowin1d.lib")
#else          //非调试版本连接
 #pragma comment(lib,"coin3.lib")
 #pragma comment(lib,"sowin1.lib")
#endif

#endif // Use_Coin3d_Dll_h__

7、只要包含上述头文件,就可以使用Coin3d进行Open Inventor开发了。

8、测试例子:

#include "E:\\use_coin3d\\Use_Coin3d_Dll.h"

#include <Inventor\Win\SoWin.h>
#include <Inventor\Win\viewers\SoWinExaminerViewer.h>
#include <Inventor\nodes\SoSeparator.h>
#include <Inventor\nodes\SoCone.h>

int main(int, char ** argv)
{

 HWND window = SoWin::init(argv[0]);
 if (window==NULL) exit(1);

 SoWinExaminerViewer * viewer = new SoWinExaminerViewer(window);
 SoSeparator * root = new SoSeparator;

 SoCone * cone = new SoCone;

 root->ref();
 root->addChild(cone);

 viewer->setSceneGraph(root);
 viewer->show();

 SoWin::show(window);
 SoWin::mainLoop();

 delete viewer;
 root->unref();

 return 0;
}