最近在学习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 )

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

posted on 2018-10-18 14:42  未完代码  阅读(1378)  评论(0编辑  收藏  举报