背景:

  最近在做数字孪生仿真,需要用Open Inventor来实现。open inventor可以看做是openGL的包装,它是面向对象的,更适合快速开发。coin3d是open inventor的实现之一,sowin则是其在win平台的接口对接,soqt与qt进行对接。

  以前的coin3d是直接exe安装包(已经编译好的)进行安装的,但是现在官网只提供源码,就需要自己编译了。

  网上最常见的安装方法:

    1. 官网下载源码,cmake进行编译,但是我coin能编译,编译到soqt就不行了。

    2. 去下载别人编译好的包,链接在最后面。

  然后我很好奇为什么一定要用soqt?直接sowin不行吗,还要链接qt和vs ,感觉很麻烦。

解决:

  最后我的解决居然是下载之前的coin2d的老版本,可以直接安装的那版。没想到还是可以用的,在vs 2019下。

 

   这个就是一直点下一步就可以了。

  安装完记得在环境变量中进行配置,添加一个系统变量COINDIR,值为c:\Coin,然后在Path中可以加一项,c:Coin\bin

  建立一个vs 2019的窗口程序,输入以下测试程序:

// Project1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#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;
}

  然后配置项目,链接库文件。右击项目->属性,配置VC++ 目录->包含文件,把coin安装的位置的include添加进来。

  链接器->常规->附加库目录,把coin安装的lib文件路径添加进来

  链接器->常规->输入->附加依赖项,把coin/lib下的lib文件添加进来,比如:coin2d.lib,sowin1d.lib

 

 

  这个时候运行,遇到一个报错:由于找不到msvcrtd.dll无法继续执行代码是什么原因。

  去网上下载msvcrtd.dll,安装在C:\Windows\System32 和 C:\Windows\SysWOW64下。有需要的朋友可以联系我。

  然后看一下结果:

 

  呜呜呜,整了两天,终于出来了,不知道后面用起来怎么样。本人水平有限,欢迎大家一起讨论指教。

参考:

  coin3d官网:

  https://www.coin3d.org/

  编译好的coin3d,sowin等:

  https://bitbucket.org/%7B33c4279a-271f-4864-88ce-03ec8eb2cafc%7D/

  安装参考:

  https://blog.csdn.net/NINGJINGD/article/details/122617453

  https://blog.csdn.net/jiaolu295/article/details/116610751?spm=1001.2014.3001.5502

  https://www.freesion.com/article/1477875649/