1

我的 c++ 程序出现运行时错误(互斥锁崩溃)。不是直接来自我的代码而是来自它使用的一些库的异常。我开始追查问题,发现我有一个库(giskard_core,但这没关系),其中列出了CMakeLists.txtfind_package(catkin REQUIRED COMPONENTS ... giskard_core)目前没有使用的库。评论它修复了我正在调查的崩溃。将其拉回find_package列表会使崩溃重新出现。我的代码非常简单,实际上只是一个主要功能和 ROS 应用程序的基本框架,而且肯定没有使用导致问题的库。

到底是怎么回事?find_package一个包是否会因为列在中而带来错误CMakeLists.txt

4

1 回答 1

0

我怀疑您的代码在实现 catkin 东西的方式上可能存在错误。由于它实际上是在没有那个项目的情况下编译的,我还怀疑它有一些预处理器防护,只有在发现 catkin 时才启用。

您的 CMakeLists.txt 中是否存在类似的内容?

if (Catkin_FOUND)
  add_definitions(-DCATKIN_FOUND)
endif (Catkin_FOUND)

您的代码中是否还存在类似的内容?

#ifdef CATKIN_FOUND
  mutex.lock()
#endif

如果是这样,那可以解释您所看到的问题。您需要修复项目实现的任何 Catkin 功能的使用。

于 2017-07-29T15:29:54.640 回答