编程语言
首页 > 编程语言> > SOFA——C++项目“hello world”

SOFA——C++项目“hello world”

作者:互联网

   既安装SOFA后,发现在F:\SOFA_v19.12\source\examples有它自带的已经编译的例子,但其中并没有C++项目,也不包含源码(个人认为是XML写的),运行就是直接在runSofa.exe那个界面点打开那些.scn项目即可,你可以用Qt打开这些.scn项目,发现就是一堆XML代码了。那条蛇就是默认打开的caduceus.scn项目。
在这里插入图片描述
   在F:\SOFA_v19.12\source\applications\tutorials这个目录下有几个C++项目的源码,如ChainHybrid、 oneParticle等。
  那么问题来了,明明一个以C++为根基的库,怎么从C++变到runSofa所出现的那个界面呢(RunSofa.exe这个东西是有C++源码的在:F:\SOFA_v19.12\source\applications\projects\runSofa,如果你以后用C++写,那么这个东西将是你除上面tutorials中那几个C++小项目外唯一的参考了)
  本文“hello world”所用的是ChainHybrid项目:原因有两个,第一个是这个项目在F:\SOFA_v19.12\source\examples\Demos\ChainHybrid.scn 中有这个scn项目,第二是其他项目我也试了,都已失败告终(在他论坛找到一些声音说有几个项目其实本来就有bug而且SOFA库在更新,这几个项目好像并没跟着改)。
最终生成ChainHybrid.exe,效果:
在这里插入图片描述官方ChainHybrid.scn 效果:
在这里插入图片描述从C++代码到上见运行效果流程就三步:

Cmake编译—VS生成—运行。

  解决这三步中遇到的“大部分”致命错误就能行了。下面就我生成这个项目过程中所遇到的问题进行说明,大部分没有错误截图了,反正不同项目遇到的问题估计也是千奇百怪。

一、Cmake编译

1.1 Cmake—Configure

1.1.1 找不到GLEW

在这里插入图片描述

1.1.2 找不到Qt

在这里插入图片描述

1.1.3 找不到如NewmatTargets.cmake这类target cmake文件

注:从这里开始大量用到磁盘文件搜索,请提前准备如 Everything 之类的Windows文件搜索工具

1.2 Cmake—Generate

1.2.1 INTERFACE_INCLUDE_DIRECTORIES问题

generate阶段会报错1.1.3小节中复制过去的 cmake 文件中INCLUDE_DIRECTORIES这个路径找不到所需头文件

二、VS生成

2.1 直接无法打开头文件

原因在于没有包含头文件所在目录,去这里添加
在这里插入图片描述
发现越添加错误越多?我添加着添加着报错四五千了, 原因在于这些头文件是找到了,但是头文件中也include了大量了其他头文件,所以报错越来越多

2.2 LNK_118错误

如图报错打不开 什么什么文件
在这里插入图片描述原因:lib或dll文件没找到

报该错误时,这个地方绿框可能不是.lib 是sceneCreator NOTFOUND其他同理
第一步:进去把这些都改成 xxx.lib
ps:为什么是 lib 不是 dll 呢,因为我改成dll没解决问题
在这里插入图片描述第二步:
添加这些lib所在的目录
在这里插入图片描述

2.3 LNK_2019错误

无法解析外部符号,原因调用了某些函数但是没包含这些函数对应的库(好像是,有点忘了)
在这里插入图片描述
-解决:根据错误提示找是缺了哪个lib, 如上图这个报错可以看出这个错误大致发生在调用sofa::simulation:: 什么什么的时候发生错误, 所以去找
在这里插入图片描述
通配符使用后找到相关lib 然后按照 2.2 小节方法添加解决

PS:还有另一个情况可能引发LNK_2019这个问题 ,既平台:
在这里插入图片描述可以试一下把这个32改成64 或反过来,反正哪个能不报错用哪个呗,可以看到我是编译的64位Relase版本,但是红框这里需要是win32, 改写成64会报错2019,这我不清楚了

三、ChainHybrid.exe运行

生成的exe文件在C:\Users\pc\Desktop\chainHyb\build\Release

3.1 找不到 dll