在 cmake 中同时使用 PCL 和 Python 有什么问题?

问题描述

我不得不说我不熟悉 cmake。 我想将 Python C API 与 PCL(点云库)一起使用,但可能我的 Python 版本有问题。

这是一个简单的 C++ 代码

#define PY_SSIZE_T_CLEAN

#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
#include "Python.h"
#include "numpy/arrayobject.h"

#include <iostream>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>

int main(int argc,char *argv[])
{
     PyObject *pName,*pModule,*pFunc;
     PyObject *pArgs,*pValue;
     int i;
     char * full_cls_name = argv[1];
     Py_Initialize();
     pName = PyString_FromString(full_cls_name);
     PyRun_SimpleString("import sys");
     PyRun_SimpleString("sys.path.append(\".\")");
     pModule = PyImport_Import(pName);
     return 0;

}

和 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
# Create Project
project(demo)
add_executable(demo embeddedPython.cpp)



option(WITH_PCL "adds pcl cloud support" ON)
if(${WITH_PCL})
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_PCL")
    find_package(PCL  required)
    link_directories(${PCL_LIBRARY_Dirs})
    add_deFinitions(${PCL_DEFinitioNS})
    include_directories(${PCL_INCLUDE_Dirs})
    #message("PCL_INCLUDE_Dirs ${PCL_INCLUDE_Dirs} " )
endif()


option(WITH_Python_C_API "adds python c api support" ON)
if(${WITH_Python_C_API})
    find_package(PythonLibs required)
    include_directories(${PYTHON_INCLUDE_Dirs})
    #link_directories(${PCL_LIBRARY_Dirs})
    #add_deFinitions(${PCL_DEFinitioNS})
    #include_directories(${PCL_INCLUDE_Dirs})
endif()

target_link_libraries(demo ${PCL_LIBRARIES}  ${PYTHON_LIBRARIES})

显示了包含目录:

enter image description here

代码和 CMakeList 运行良好,但是,如果我更改顺序,我的意思是如果我调用

find_package(PythonLibs required) 首先和之后,如果我调用 find_package(PCL required),我会收到如下错误

error: ‘PyString_FromString’ was not declared in this scope
      pName = PyString_FromString(full_cls_name);
              ^~~~~~~~~~~~~~~~~~~
/home/alitokur/Softwares/embeddedPython/embeddedPython.cpp:21:14: note: suggested alternative: ‘PyLong_FromString’

如果你看到了,PCL 和 python 使用不同的 python 包含路径。的确;我有很多问题,我认为是这种冲突导致了问题。

我的所有工作区的 Python 版本应该是什么? 如何设置python版本?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)