Ich benutze derzeit ROS Jade in Ubuntu 14.04 und versuche, einen MQTT Publisher zu meiner Mosquitto Software zu erstellen. Ich kann es jedoch nicht korrekt über catkin_make erstellen. In meinem Haupt-cpp-Code habe ich die "mosquitto.h" -Datei eingefügt. Entschuldigung, dass ich meine cpp-Datei nicht so veröffentlichen kann, wie es für Arbeitszwecke ist.Mosquitto mit ROS Jade undefined Referenz
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES mqtt
CATKIN_DEPENDS roscpp std_msgs
DEPENDS system_lib
)
set(MOSQ_LIB_LOCATIONS
/usr/lib
)
set(INCLUDE_HEADER_FILES
src/mosquitto.h
#include/lib/cpp/mosquittopp.h
)
include_directories(
${catkin_INCLUDE_DIRS}
${mosquitto_INCLUDE_DIRS}
/home/catkin_ws/src/mqtt/include/lib
/home/catkin_ws/src/mqtt/include/lib/cpp
)
add_executable(mqtt src/mqtt.transmit.cpp ${INCLUDE_HEADER_FILES} ${MOSQ_LIB_LOCATIONS})
target_link_libraries(mqtt ${catkin_LIBRARIES})
Fehler
mqtt.transmit.cpp:(.text+0x1f8): undefined reference to `mosquitto_lib_init'
mqtt.transmit.cpp:(.text+0x210): undefined reference to `mosquitto_new'
mqtt.transmit.cpp:(.text+0x237): undefined reference to `mosquitto_username_pw_set'
mqtt.transmit.cpp:(.text+0x259): undefined reference to `mosquitto_connect'
mqtt.transmit.cpp:(.text+0x285): undefined reference to `mosquitto_loop_start'
mqtt.transmit.cpp:(.text+0x2bc): undefined reference to `mosquitto_publish'
mqtt.transmit.cpp:(.text+0x2d0): undefined reference to `mosquitto_loop_stop'
mqtt.transmit.cpp:(.text+0x2df): undefined reference to `mosquitto_disconnect'
mqtt.transmit.cpp:(.text+0x2ee): undefined reference to `mosquitto_destroy'
mqtt.transmit.cpp:(.text+0x2f3): undefined reference to `mosquitto_lib_cleanup'
collect2: error: ld returned 1 exit status
Ich dachte zunächst, dass es ein Fehler war, die Header-Datei zu lesen, die ich eingeschlossen, aber wenn das der Fall ist, die „keine solche Datei Verzeichnis "Fehler würde auftreten. Die Funktionen, die in den "undefined Referenzen" waren, befinden sich in der Header-Datei, die ich eingefügt habe, nicht sicher, warum es noch nicht definiert ist. Würde die Anleitung schätzen, um die undefinierte Referenz loszuwerden.
Vielen Dank!
[EDIT] Ich habe die MQTT Publishing cpp-Code von der folgenden Website, müssen Sie nach unten scrollen. Vielen Dank! Mosquitto Software funktioniert gut. https://robomq.readthedocs.io/en/latest/MQTT/
die mosquitto.h Datei nicht im Verzeichnis/usr/lib, habe ich das Verzeichnis/usr/lib dir während einer Vermutung und überprüfen Methode das bekommen Code funktioniert. Die Bibliotheken (Header und Quelldateien) befinden sich in meinem catkin/mqtt/include/lib. – cechsterRK
Also ist das die CMake-Datei, die mit dem Quellcode geliefert wurde? – diametralpitch