In meinem Projekt möchte ich xbee external library mit ROS verwenden. Ursprünglich, wenn ich EXE-Datei mache, benutze ich Makefile. Aber da ROS Catkin verwenden, muss ich exe-Datei mit Cmakelists.txt
machen Aber ich bin auf den gleichen Fehler stecken undefined reference ..
, auch ich folgte jeder Richtung, die ich kann.undefined Referenz mit Cmakelists.txt
Die Verzeichnisstruktur meines Projekts sieht wie folgt aus.
.
├── xbee_ansic_library
├── include - 3 subdirectories have h file
├── wpan
├── xbee
└── zigbee
├── src - subdirectories have c file
├── wpan
├── xbee
└── zigbee
└── my_project
├── src
└── main.cpp
└── CMakeLists.txt
und seit original Make-Datei wie this aussehen wurde, schrieb ich my_project/CMakeLists.txt wie unten.
project(my_project)
## Declare a catkin package
catkin_package()
# %EndTag(FULLTEXT)%
include_directories(include ${catkin_INCLUDE_DIRS})
include_directories(~/catkin_ws/src/xbee_ansic_library/include)
include_directories(~/catkin_ws/src/my_project/include)
LINK_DIRECTORIES(~/catkin_ws/src/xbee_ansic_library/src)
LINK_DIRECTORIES(~/catkin_ws/src/my_project/src)
add_library(base_OBJECTS
${xbee_ansic_library_SRC_POSIX}/xbee_platform_posix.c
${xbee_ansic_library_SRC_POSIX}/xbee_serial_posix.c
${xbee_ansic_library_SRC_UTIL}/hexstrtobyte.c
${xbee_ansic_library_SRC_UTIL}/memcheck.c
${xbee_ansic_library_SRC_UTIL}/swapbytes.c
${xbee_ansic_library_SRC_UTIL}/swapcpy.c
${xbee_ansic_library_SRC_UTIL}/hexdump.c src/parse_serial_args.c)
add_library(xbee_OBJECTS
${base_OBJECTS}
${xbee_ansic_library_SRC_WPAN}/wpan_types.c
${xbee_ansic_library_SRC_XBEE}/xbee_device.c
${xbee_ansic_library_SRC_XBEE}/xbee_atcmd.c)
....
add_executable(main src/main.cpp)
target_link_libraries(main ${catkin_LIBRARIES} main_OBJECTS)
add_dependencies(main my_project_generate_messages_cpp)
Aber wenn ich mit catkin_make
Befehl, ich habe Fehler
CMakeFiles/main.dir/src/main.cpp.o: In function
main': main.cpp:(.text+0x177): undefined reference to
xbee_dev_dump_settings' collect2: error: ld returned 1 exit status
Aber xbee_dev_dump_settings
ist in der xbee_ansic_library/include/xbee/device.h
, xbee_ansic_library/src/xbee/xbee_device.c
. Da Fehler ist undefined reference ..
nicht, not declared ..
Ich denke, dass ich gut mit Kopfzeilen.
Was sollte als nächstes tun?