zoukankan      html  css  js  c++  java
  • ros 工作空间下cpp文件调用其他cpp文件的函数或变量

    最近在学习ros节点编程,在工作空间下添加如下文件:

    message.h

    #ifndef MESSAGE_H
    #define MESSAGE_H
    extern int n;
    void init_ros();
    
    void publisher();
    void sublisher();
    
    #endif

    message.cpp

    #include "message.h"
    #include<stdio.h>
    int n=10;
    void init_ros()
    {
      printf("nihao");
    }
    void publisher()
    {
     printf("nihao");
    }
    

    main.cpp

    #include "qt_ros_test.h"
    #include "message.h"
    
    int main(int argc, char *argv[])
    {
        init_ros();
         return 0;
    }

    如果是普通的c++工程这么调用是没问题的,因为是用g++进行编译的。

    但是在ros工作空间这么调用就会出现:undefined reference to `init_ros()'

    这是因为ros是用cmake编译的,是要生产cmakelists.txt文件。

    所以必须要修改cmakelists.txt文件,在该文件的最后加入:

    add_executable(节点名称  src/message.cpp src/message.h )

    再进行编译,你会发现通过了。

  • 相关阅读:
    React.js自学第一天
    优化的34条定律
    JS 打字机效果
    css3 翻书效果
    对象操作
    表单提交验证
    封装cookie组件
    iOS中为网站添加图标到主屏幕
    教你从Win8换回Win7
    关于VB中Print函数在数组中换行的理解
  • 原文地址:https://www.cnblogs.com/fuhang/p/9810388.html
Copyright © 2011-2022 走看看