undefined symbol: _ZN4Foam23ControllerStateProvider8positionE错误求助



  • 大家好,我在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





  • _ZN4Foam23ControllerStateProvider8positionE

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



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


  • OpenFOAM讲师

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



  • @yfclarkundefined symbol: _ZN4Foam23ControllerStateProvider8positionE错误求助 中说:

    ic或sta

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


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2