我尝试用c++运行python代码
#include <python3.7/Python.h>
// PYTHON START
Py_Initialize();
PyObject *module_name = PyUnicode_FromString("plotter");
PyObject *module = PyImport_Import(module_name);
Py_DECREF(module_name);
if (module != nullptr) {
PyObject *py_function = PyObject_GetAttrString(module, "plot_data");
//call the python and pass the data generated in C
//------------------------------------------------------------------------------------------------------
if (py_function && PyCallable_Check(py_function)) {
pid_t pid = fork();
if (pid == 0) {
PyObject *res = PyObject_CallFunctionObjArgs(py_function, q);
}
}
}
我以前从未这样做过,但我不认为这是问题所在,因为我无法构建代码。 我的错误是:
^{pr2}$我的cmake文件看起来像:
cmake_minimum_required(VERSION 3.14)
project(krpc)
set(CMAKE_CXX_STANDARD 11)
link_libraries("-lkrpc -lprotobuf -lpthread")
find_package(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
add_executable(krpc test.cpp)
target_link_libraries(krpc ${PYTHON_LIBRARIES})
编辑:我的cmake输出如下所示:
/snap/clion/81/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /home/alex/Workspace/Clion/krpc
-- PYTHON_LIBRARIES: /usr/lib/x86_64-linux-gnu/libpython2.7.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/alex/Workspace/Clion/krpc/cmake-build-debug
[Finished]
我看过cmake中的find_packages(),如果我有普通的python,它会找到python2.7,但我想要3.7。我好像找不到我要找的东西。在
将所需的cmake更改为3.7.2版,然后清理项目的缓存后,该问题已得到修复。在
你的链接器试图在中查找PyUnicode_FromStringlibpython.so. 它是Python2,它没有PyUnicode_FromString(它只有非unicode PyString_FromString)。在
在CMakeLists.txt文件示例:
相关问题 更多 >
编程相关推荐