【发布时间】:2021-11-03 20:11:59
【问题描述】:
问题:我可能遇到了 ROS Cpp 库问题。我的 cpp 没有链接到我的一些 hpp 内容。当它只是cpp时,它可以工作,当我添加ros时,它不再起作用了。我自己的 cpp 不流利,我应该怎么做才能解决这个问题?
错误:
/usr/bin/ld: CMakeFiles/node.dir/src/main.cpp.o: in function `main':
main.cpp:(.text+0x244): undefined reference to `A::A(int, char**)'
/usr/bin/ld: main.cpp:(.text+0x258): undefined reference to `A::~A()'
collect2: error: ld returned 1 exit status
包配置:我使用的是 Ros noetic
-->Ros_package
- 包括
- A.hpp
- 所有 h 和 hpp 的东西
- 源
- main.cpp
- 所有 c 和 cpp 的东西
A.hpp 内容
#ifndef A_HPP
#define A_HPP
/*** I N C L U D E S **********************************************************/
#include QT/ another .hpp, another .h
/* D E F I N E S ************************************************************/
/* Debug helper */
/* S T R U C T U R E **********************************************************/
typedef struct stuff
/*** C L A S S ****************************************************************/
class A : public QThread
{
Q_OBJECT
public:
A (int argc, char** argv);
virtual ~A (void);
void run (void);
private:
method
public slots:
method
private:
stuff
};
#endif // A_HPP
Main.cpp 内容:
/* I N C L U D E S ************************************************************/
#include <QApplication>
#include <ros/ros.h>
#include <A.hpp>
/* M A I N ********************************************************************/
int main (int argc, char** argv)
{
QApplication app(argc, argv);
/* Launch main thread */
ros::init(argc, argv, "test_dammit");
A mainThread (argc, argv);
/*stuff
return 0;
}
Cmakefile 内容:
cmake_minimum_required(VERSION 3.0.2)
project(ros_package)
catkin_package()
find_package(catkin REQUIRED roscpp)
## System dependencies are found with CMake's conventions
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Network REQUIRED)
include_directories(
include
${catkin_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/include
)
add_executable(node src/main.cpp )
## Specify libraries to link a library or executable target against
target_link_libraries(node
${catkin_LIBRARIES} Qt5::Widgets Qt5::Network
)
上下文:我正在为 Ros 改编一个非 Ros cpp 包。所以我知道 hpp 和 cpp 是正确编写的。我想我遇到了 hpp/cpp 库链接问题。
我似乎找不到可以在线使用的解决方案。我也尝试了很多 CmakeFile 改编,没有运气。
我应该寻找什么?
谢谢大家!
编辑:
这个Link 是相关的,如果代码 cpp 根本不工作但没有 ROS 的代码工作完美。所以在做Ros集成的时候就出现了问题。
【问题讨论】: