标签:头文件 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。