coin3d + vs2019 + win窗口程序安装
背景:
最近在做数字孪生仿真,需要用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/