gpt4 book ai didi

c++ - CMake:find_package 中的项目如何破坏程序?

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:34 25 4
gpt4 key购买 nike

我的 C++ 程序有运行时错误(互斥锁崩溃)。异常不是直接来 self 的代码,而是来自它使用的某些库。我开始追查问题,发现我在 find_package(catkin REQUIRED COMPONENTS ... giskard_core ) 我目前没有使用。评论它修复了我正在调查的崩溃。将其拉回 find_package 列表使崩溃再次发生。我的代码非常简单,从字面上看只是一个主要功能和 ROS 应用程序的骨架,并且肯定没有使用导致问题的库。

这是怎么回事?仅在 CMakeLists.txt 中的 find_package 中列出包会带来错误吗?

最佳答案

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

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

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

您的代码中是否也存在类似的东西?

#ifdef CATKIN_FOUND
mutex.lock()
#endif

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

关于c++ - CMake:find_package 中的项目如何破坏程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com