我的c ++程序出现运行时错误(互斥锁死机崩溃)。异常不是直接来自我的代码,而是来自它使用的一些库。我开始追查问题并发现我在CMakeLists.txt
find_package(catkin REQUIRED COMPONENTS ... giskard_core)
中列出了一个库(giskard_core,但无关紧要),我目前没有使用它。评论它修复了我正在调查的崩溃。将其拉回find_package
列表会导致崩溃。
我的代码非常简单,只是一个主要功能和ROS应用程序的骨干,当然没有使用导致问题的库。
发生了什么事?只是在find_package
中的CMakeLists.txt
中列出了包,是否会导致错误?
答案 0 :(得分:0)
我怀疑你的代码可能在如何实现catkin内容时出错。由于它实际上是在没有该项目的情况下进行编译,我还怀疑它有一些预处理器防护装置只有在找到catkin时才会启用。
您的CMakeLists.txt中是否存在类似的内容?
if (Catkin_FOUND)
add_definitions(-DCATKIN_FOUND)
endif (Catkin_FOUND)
您的代码中是否还存在类似的内容?
#ifdef CATKIN_FOUND
mutex.lock()
#endif
如果是这样,那可以解释您所看到的问题。您需要修复项目实施的任何Catkin功能的使用。