ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-05-24 17:43:38  阅读:474  来源: 互联网

标签:头文件 v19.12 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

在这里插入图片描述

  • 解决:如图添加GLEW_INCLUDE_DIR目录

1.1.2 找不到Qt

在这里插入图片描述

  • 解决:如图添加CAMKE_PREFIX_PATH Qt目录

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

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

  • 解决:搜索找到目标 .cmake 文件,复制粘贴到F:\SOFA_v19.12\build\cmake目录下

1.2 Cmake—Generate

1.2.1 INTERFACE_INCLUDE_DIRECTORIES问题

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

  • 解决:用Notepad++打开这些cmake 文件,找到这里(注意一个cmake文件中不止一处)
    在这里插入图片描述
    更改为:
    在这里插入图片描述其实就是将相对路径更改为绝对路径,那怎么知道这个绝对路径在哪:
    他需要的是相关.h 头文件,直接去搜索这个头文件在哪, 如上面这个头文件名就是SceneCreator.h找到目录 替换
    大部分其实可以根据父目录快速定位:如
    原始:
    在这里插入图片描述更改:
    在这里插入图片描述

二、VS生成

2.1 直接无法打开头文件

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

  • 解决:打开F:\SOFA_v19.12\build\applications\projects\runSofa\runSofa.sln直接去把这个工程所包含的头文件路径复制过来(这肯定不是正道方法,有同志知道怎么解决这个头文件路径问题请求赐教)

2.2 LNK_118错误

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

  • 解决:添加lib所在

报该错误时,这个地方绿框可能不是.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

  • 解决:去找到这个dll文件 复制到 relese 这个目录下
  • 其实都在F:\SOFA_v19.12\build\bin\Release这里,既RunSofa.exe所在目录下
  • 建议直接复制所有该目录下所有dll文件过去,因为真的很多很多(泪目

    标签:头文件,v19.12,SOFA,C++,hello,报错,world,目录
    来源: https://blog.csdn.net/weixin_38952893/article/details/106273064

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有