最近在学习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 )
再进行编译,你会发现通过了。