蚊子带有Ros Jade未定义的参考
Mosquitto with ROS Jade undefined reference
我目前正在Ubuntu 14.04中使用Ros Jade,并试图为我的Mosquitto软件创建MQTT Publisher。但是,我无法通过catkin_make正确构建它。在我的主要CPP代码中,我包含了" Mosquitto.h"文件。很抱歉我无法发布我的CPP文件,因为它是出于工作目的。
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})
错误
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
我最初认为读取我包含的标头文件存在错误,但是如果是这样,则会发生"无文件目录"错误。"未定义参考"中的功能位于我包含的标题文件中,不确定为什么它仍然不确定。感谢您摆脱未定义参考的指导。
非常感谢!
[编辑]我从以下网站中获得了MQTT发布CPP代码,您必须滚动到底部。谢谢!蚊子软件工作正常。https://robomq.readthedocs.io/en/latest/mqtt/
在这种情况下,链接器无法找到包含错误输出中显示的函数名称的对象文件。除非您更改此CMAKE文件,否则我猜想不在您的/usr/lib dir中,它是链接器所在的位置。
已解决。使用蚊子时,我必须将cmakelist中的客户库链接起来。基本上是libmosquitto.so文件,即客户库。
我在我的CMAKE列表中添加了以下内容:
set(Mosquitto_libs
/usr/lib/x86_64-linux-gnu/libmosquitto.so
/usr/lib/x86_64-linux-gnu/libmosquitto.so.1
)
target_link_libraries(mqtt_pub_node ${catkin_LIBRARIES} ${Mosquitto_libs})
相关文章:
- GTest EXPECT_EQ给出未定义的错误参考
- 在VSCode中编译C++给了我一个未定义的参考
- Armadillo正在为共享的lapack库获取未定义的参考
- 我对C++程序有一个未定义的参考,不知道如何处理它
- 使用Arduino IDE的构造函数的未定义参考错误
- 在C++中使用 CImg 的未定义参考错误
- gtest的未定义参考
- 未定义参考 cv::鱼眼::校准
- WEBRTC的未定义参考
- 如何编译ZBAR示例?(未定义参考..)
- 针对C 库链接时的未定义参考
- 命名空间外部变量的未定义参考/多重定义,C 结构问题
- 简单QT程序中的未定义参考
- 主要makefile中的未定义参考
- C 标题中的外部变量的未定义参考
- 对[class::function]的未定义引用/对[class]的typeinfo的未定义参考
- icu 54-未定义参考
- 信号上的QT未定义参考编译错误
- boost 1.58未定义参考
- QT未定义参考错误(Qextserialport)