解决方案:Coin3D安装编译以及配合VS2019、QT的使用
前言
最近项目上需要机器人仿真界面的实现,查阅相关资料后准备入坑Coin3D。但是在安装时就遇到的大麻烦,现有的一些博文都是在VS2010或者2013或者2015的环境下配置的,那会只需要在Coin3D的官网下载必要的库解压下来,配置一下环境,就可以用了。但是现在官方网址移到了Github,之前的方法也早已不适用,所以,特在此记录一下作者最新的编译过程以及遇到的一些坑。(可能有的小伙伴已经要开会了,我下载别人编译好的不一样可以用,一天天净整这些花里胡哨的)。确实,如果大家图省事的话,可以直接下载别人编译好的Coin3D去使用,就不需要看后面的内容了,我也会上传我编译好的Coin3D供大家使用。但是这里就要说一句了,有句老话说得好,授人以鱼不如授人以渔,我还是稍稍的记录一下哈哈。 ——2021/5/17
Coin3D简介
目前世界上比较成熟的Open Inventor(以下简称OIV)开发包有三个,它们分别由SGI( http://www.sgi.com),TGS( http://www.tgs.com)和SIM( http://www.coin3d.org)公司开发的。SGI是最早提出并开发OIV的公司。但SGI的OIV主要用在UNIX操作系统下,没有提供对Microsoft Windows操作系统的支持。TGS公司是最早将OIV由Unix系统移植到Microsoft Windows下的公司。TGS的OIV是目前世界上使用最多的OIV版本。但TGS的OIV是一个商业软件开发包,其购买开发版权的费用非常昂贵,不适合普通用户学习和使用。SIM公司开发的Coin3D OIV可以同时在UNIX和Microsoft Windows下使用。这是一个开放源码的OIV开发包,使用协议采用的是GPL协议。非常适合希望学习使用OIV的普通用户。详情查看Open Inventor 简介
下图是Coin3D官网中的架构图
下表列出了Coin3D所包含的组件及其主要用途。其中绿色的部分为必装组件,黄色的部分需要根据不同的平台来选用,青色的部分为可选组件。对于Windows平台而言,必选的组件为Coin、SoWin、Soqt、Quarter。Simage和Simvoleon可根据实际需要进行选择。
本文将主要介绍Coin3D OIV开发包在Microsoft Windows操作系统下,Visual Studio2019开发环境中的安装与使用。
环境
Windows10 x64系统下使用VS2019与QT5.15.2,VS中qt插件使用最新的2.7.1
VS2019与QT的配置参考VS2019+Qt
Coin3D编译
按照Coin3D在Github上官方库的安装说明,执行如下步骤:
1、Cmake安装
版本:cmake3.20.2
用来编译coin3d源代码,参考Windows下的CMake下载与安装,在cmake官网下载图形界面安装文件直接装即可。
2、Git安装
主要用来下载GitHub上面的coin3d源代码进行之后的编译操作,不装git直接在GitHub下载源码压缩包应该也是可以的,只是不知道下载下来的版本一致不一致。我这里由于一直在用Git的缘故,直接按照官网的步骤来做了。
git安装参考这里
3、Boost安装
版本:1.76
参考此博文
4、Doxygen安装
版本:1.9.1
Doxygen用来自动生成说明与操作文件,编译coin3d时默认是要生成相关文件的,所以需要Doxygen。
如果选择不生成这些说明文件,也可以不安装。
Doxygen安装就是普通软件的安装了,进去官网下载安装包,一步步点击下一步即可。
5、编译Coin
首先要确定在你的系统上有哪些编译器被cmake支持。在命令行使用 cmake --help
可以查看。我这里结果如下,标 *
的是当前的编译器,因为我这里的环境是VS2019,所以要用Visual Studio 16 2019
。
如果这里你的选项不是VS2019,需要使用命令cmake -G
来显示指定。如果不指定,cmake会选择默认编译器来进行编译。
Generators
The following generators are available on this platform (* marks default):
- Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Ninja Multi-Config = Generates build-<Config>.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles JOM
= Generates CodeBlocks project files.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - MinGW Makefiles = Generates CodeLite project files.
CodeLite - NMake Makefiles = Generates CodeLite project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - MinGW Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
Kate - MinGW Makefiles = Generates Kate project files.
Kate - NMake Makefiles = Generates Kate project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Sublime Text 2 - MinGW Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - NMake Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles
= Generates Sublime Text 2 project files.
-
下载源码(默认下载到用户目录下):
git clone --recurse-submodules https://github.com/coin3d/coin coin
-
配置编译选项:
cmake -Scoin -Bcoin_build -DCMAKE_INSTALL_PREFIX=C:\Coin3D -DBOOST_ROOT=C:\Data\Boost-1.56.0 -DCOIN_BUILD_DOCUMENTATION=OFF
如果cmake版本低于3.13,将选项
-S
改为-H
-S
指源码路径,这里就是下载下来的coin库的文件夹名
-B指编译路径,coin_build就是编译文件所在的文件夹名。如果不存在此文件夹则自动创建(不需要自己新建文件夹)
-DCMAKE_INSTALL_PREFIX
是你的Coin3D相关库的安装目录,可以提前建好Coin3D文件夹,路径中不要包含中文
-DBOOST_ROOT
是你之前安装的boost的安装目录,这里要做修改,改成你自己的boost的安装目录
-DCOIN_BUILD_DOCUMENTATION=OFF
指是否生成编译相关的html文件和帮助文档。官网说默认OFF,和上面的Doxygen的用法介绍那边不知道是不是一个东西,没有深究。这里可以选 OFF,因为生成的文档在Documentation 都可以找到 -
编译Coin库
cmake --build coin_build --target ALL_BUILD --config Release -- /nologo /verbosity:minimal /maxcpucount
如果编译Debug版本,只需将Release 改为Debug
-
安装Coin库
cmake --build coin_build --target INSTALL --config Release -- /nologo /verbosity:minimal /maxcpucount
如果编译Debug版本,只需将Release 改为Debug
6、编译Soqt
步骤与coin类似
-
下载源码(默认下载到用户目录下):
git clone --recurse-submodules https://github.com/coin3d/soqt soqt
-
配置编译选项:
cmake -Ssoqt -Bsoqt_build -A x64 -DCMAKE_INSTALL_PREFIX=C:\Coin3D -DCMAKE_PREFIX_PATH="C:\Coin3D;C:\Qt\5.15.2\msvc2019_64" -DBOOST_ROOT=C:\Data\Boost-1.56.0 -DSOQT_BUILD_DOCUMENTATION=OFF
选项解释参考Coin
-
编译Soqt库
cmake --build soqt_build --target ALL_BUILD --config Release -- /nologo /verbosity:minimal /maxcpucount
如果编译Debug版本,只需将Release 改为Debug
-
安装Soqt库
cmake --build soqt_build --target INSTALL --config Release -- /nologo /verbosity:minimal /maxcpucount
如果编译Debug版本,只需将Release 改为Debug
7、编译Quarter
参考Soqt,只需要将相关命令中的soqt改成quarter,SOQT改为QUARTER
8、编译Sowin
参考Soqt,只需要将相关命令中的soqt改成sowin,SOQT改为SOWIN
-
Sowin库下载问题:下载时遇到无法下载的问题,改用下面的命令行可解决
git clone --recurse-submodules https://github.com/coin3d/sowin.git
9、编译Simage
编译时遇到BUG,由于暂时用不到此库,暂时搁置
10、编译simvoleon
编译时遇到BUG,由于暂时用不到此库,暂时搁置
至此,Coin3D库编译完成,配置一下就可以使用。目录结构如下图所示:
试运行
首先,需要电脑上已经安装VS2019, QT和VS下的QT扩展Qt VS Tool,这里不详细说明。新建项目时选择widget项目,然后就是VS 2019 下的配置了。
需要设置include、lib、和input。
(1)c/c+±->General–>Additional Include Directories, 添加目录“****\Coin3D\include”
(2)Linker–>General --> Additional Library Directories, 添加目录 “******\Coin3D\lib”
(3)Linker -->Input–>Additional Dependencies, 添加目录*.lib文件名,如Coin4d.lib;Quarter1d.lib;SoQt1d.lib;SoWin1d.lib等
main.cpp添加代码如下:
#include <QtWidgets/QApplication>
#include <Inventor/Qt/SoQt.h>
#include <Inventor/Qt/viewers/SoQtExaminerViewer.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoCube.h>
int main(int argc, char *argv[])
{
QWidget* mainwin = SoQt::init(argc, argv, argv[0]);
SoSeparator* root = new SoSeparator();
root->ref();
SoCube* cube = new SoCube();
root->addChild(cube);
SoQtExaminerViewer* eviwer = new SoQtExaminerViewer(mainwin);
eviwer->setSceneGraph(root);
eviwer->show();
SoQt::show(mainwin);
SoQt::mainLoop();
root->unref();
delete eviwer;
return 0;
}
不出意外会出现错误提示:
需要设置SOQT_DLL的预处理。方法是在C/C++ -> Preprocessor -> Preprocessor Definitions
, 添加SOQT_DLL
运行结果如下:
试运行BUG汇总
Bug0
需要设置SOQT_DLL的预处理。
解决方法:在C/C++ -> Preprocessor -> Preprocessor Definitions
, 添加SOQT_DLL
Bug1
当前项目编译环境不是Debug
解决方法:修改下图的Release为Debug
Bug2
没有添加dll文件路径
解决方法:
1、只要在电脑的用户变量或者系统变量的path里面把相关dll的路径加上就行了
2、也可以把Coin3D目录下的bin文件夹下dll文件复制到当前工程目录
参考:
配置COIN3D的DLL路径
VS项目中引入dll的方法
Bug3
没有添加附加依赖项,导致链接出错。
解决方法:Linker -->Input–>Additional Dependencies, 添加目录*.lib文件名,如Coin4d.lib;Quarter1d.lib;SoQt1d.lib;SoWin1d.lib等
参考资料
Open Inventor 简介
Open Inventor学习资源
基于VS2019+QT的Coin3D三维可视化库的安装预测测试
参考书籍
GitHub附件
更多推荐
所有评论(0)