之前在一个C++项目当中进行了一些数学运算,打算加入python的matplotlib进行画图,因为它有C++接口,可以直接在C++进行调用。
但是配置好了以后,运行发现以下错误:
(process:8247): Gtk-ERROR **: 11:14:04.754: GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported
追踪与中断点陷阱 (核心已转储)
原因可能是这个项目里面同时使用了GTK 2/3 和GTK 4,所以导致不兼容而报错。针对这个原因,检索了一些相关的资料,python3对应的matplotlib所使用的就是GTK 4,所以大概率是我原来的项目使用了GTK 2/3。
好在查阅了资料后知道python2对应的matplotlib所使用的是GTK 2/3,那么只需要把对应的python版本换成2的即可。在CMakelists.txt中这样写:
# 查找python库版本
find_package(PythonLibs 2 REQUIRED)
# 找到 NumPy 的头文件路径
execute_process(
COMMAND python2 -c "import numpy; print(numpy.get_include())"
OUTPUT_VARIABLE NUMPY_INCLUDE_DIRS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# 添加头文件路径
include_directories(
${PYTHON_INCLUDE_DIRS} # Python 头文件路径
${NUMPY_INCLUDE_DIRS} # NumPy 头文件路径
)
# 打印 Python 和 NumPy 相关信息
message(STATUS "Python include dirs: ${PYTHON_INCLUDE_DIRS}")
message(STATUS "Python libraries: ${PYTHON_LIBRARIES}")
message(STATUS "NumPy include dirs: ${NUMPY_INCLUDE_DIRS}")
最后记得链接上库,project_cmake替换成你的项目生成文件
# Link your application with OpenCV libraries
target_link_libraries(project_cmake ${PYTHON_LIBRARIES})
后面还有一些问题,在这个博客中得到了解决:
解决:ImportError: No module named '_tkinter', please install the python3-tk package_python3ideno module thinker-优快云博客