Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. undefined symbol: _ZN4Foam23ControllerStateProvider8positionE错误求助

undefined symbol: _ZN4Foam23ControllerStateProvider8positionE错误求助

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 4 发布者 5.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • T 离线
    T 离线
    tower
    写于2019年11月7日 11:24 最后由 编辑
    #1

    大家好,我在src下创建了一个类叫做ControllerStateProvider,然后make文件借鉴其他的修改了下,Allwmake之后编译没有问题,然后在rigidbodyState的类中(这个是一个获取物体运动状态的functionObject)加入了几行关于ControllerStateProvider的代码,我在rigidbodyState类的option中加入了ControllerStateProvider 类的库和include文件 如下图
    c91a9c4b-3ecb-4dc2-adb5-9229df672caa-image.png
    然后在rigidbodyState.C 中include了ControllerStateProvider .H 然后编译rigidbodyState,然后编译也没有问题。
    然后我运行了一个测试案例 用的interDyMFoam的求解器,然后就报错,报错信息显示找不到这个functionObject的库,错误信息如下,在修改之前 这个functionObject是没有任何问题的 。
    请问这是什么原因导致的呢 ? 我在 cfd-online 看说是option里相应的lib没有添加上,但是我这里已经添加上了,并且编译没有问题,只是运行的时候报错,请问怎么该解决这个问题呢? 万分感谢!!
    2d6fad96-c78c-4b1b-a65a-93603badc176-image.png

    星 1 条回复 最后回复 2019年11月7日 11:57
  • 星 离线
    星 离线
    星星星星晴
    在 2019年11月7日 11:57 中回复了 tower 最后由 编辑
    #2

    @tower http://www.cfd-china.com/topic/3033/将2-3版本中自带的komega模型改名字后单独编译报错/5

    游荡

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2019年11月7日 13:02 最后由 编辑
    #3

    _ZN4Foam23ControllerStateProvider8positionE

    这种xxxFoamxxxxxxxxxxxxxxxxxxx特别长的一般是没编译完整,比如库编译了求解器没编译,某些库编译了外面的库没编译,类似

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • T 离线
    T 离线
    tower
    写于2019年11月10日 11:28 最后由 编辑
    #4

    问题已经解决了,@星星星星晴 在另一个帖子里回复的修改模型的方法很准确,然后我又检查了一遍,我这方面确实没问题,然后跟@东岳 老师说的库没全部编译也没有关系,我一直用的是Allmake。
    我是创建了一个类,系统通过类的静态变量来传递一个参数,按照我的理解,类的静态变量在声明的时候就已经存在了,而且我在求解器的最开始对静态变量进行了初始化,然后通过类名直接访问来改变和读取静态变量的值,问题就出在这里。我不明白为什么上述操作不行,虽然编译没问题。我重新写一个成员函数,在成员函数里对静态变量进行修改,再编译,没问题,然后测试案例也没有问题。
    虽然不是很明白是为什么这样,但是在这里写下来,希望对有类似问题的朋友有帮助。

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yfclark 神
    写于2019年11月11日 03:59 最后由 编辑
    #5

    你应该是搞成private了,要么把数据变成public或static,要么用public的成员函数访问修改

    T 1 条回复 最后回复 2019年11月12日 07:14
  • T 离线
    T 离线
    tower
    在 2019年11月12日 07:14 中回复了 yfclark 最后由 编辑
    #6

    @yfclark 在 undefined symbol: _ZN4Foam23ControllerStateProvider8positionE错误求助 中说:

    ic或sta

    我是用的静态数据变量static 然后也是public成员

    1 条回复 最后回复
2019年11月7日 11:24

6/6

2019年11月12日 07:14

2019年11月12日 07:14
  • 登录

  • 登录或注册以进行搜索。
6 / 6
  • 第一个帖子
    6/6
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]