Chinatowns 2021-08-11 10:29
浏览 52
已结题

怎么做到对含ros程序的封装?

想要利用g++来封装一个最简单的talker和listener。我按照ros wiki的教程已经做好了ws、cmakelist等,并且能够通过rosrun成功运行。
但是在封装时,我在listener所在的src文件夹中打开终端,键入g++ -o listener listener.cpp -L. liblistener.so(已经能够编译生成liblistener.so文件和listener.o文件了)。结果不断报错,如下所示

/usr/bin/ld: /tmp/ccyEXvVs.o: in function `main':
listener.cpp:(.text+0x158): undefined reference to `ros::init(int&, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'

/usr/bin/ld: listener.cpp:(.text+0x51d): undefined reference to `ros::Rate::Rate(double)'
/usr/bin/ld: listener.cpp:(.text+0x522): undefined reference to `ros::ok()'
/usr/bin/ld: listener.cpp:(.text+0x5ce): undefined reference to `ros::spinOnce()'
/usr/bin/ld: listener.cpp:(.text+0x5dd): undefined reference to `ros::Rate::sleep()'
/usr/bin/ld: listener.cpp:(.text+0x5f6): undefined reference to `ros::Subscriber::~Subscriber()'
/usr/bin/ld: listener.cpp:(.text+0x605): undefined reference to `ros::Subscriber::~Subscriber()'

此前在生成.o和.so文件时,编译报错找不到头文件,我就给g++添加了ros/的搜索路径,于是就能生成了,现在想生成可执行文件却生成不了。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月19日
    • 创建了问题 8月11日

    悬赏问题

    • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
    • ¥15 Android studio 无法定位adb是什么问题?
    • ¥15 C#连接不上服务器,
    • ¥15 angular项目错误
    • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
    • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
    • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
    • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
    • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
    • ¥200 csgo2的viewmatrix值是否还有别的获取方式