gpt4 book ai didi

c++ - 使用boost python编译在python代码内部调用的c++代码时出错

转载 作者:行者123 更新时间:2023-11-28 04:10:22 28 4
gpt4 key购买 nike

我在 Python 中开始了一个项目,我想使用一些图像对象。我想在我的 Python 代码中调用一些 C++ 函数。经过一些研究,我决定使用 Python Boost 库在我的 Python 代码中调用 C++ 函数。

我的 Boost 版本是:libboost_python3-py36.so.1.65.1。我正在使用 Python v3.6。

我在 CppProject.cpp 中写了这样的 C++ 代码:


char const* myMethod() {
// do some operations ...


return "It is Done";
}

#include <boost/python.hpp>

BOOST_PYTHON_MODULE(CppProject) {
boost::python::def("getTryString", myMethod); // boost::python is the namespace
}

另外,我创建了我的 CMakeLists.txt 是这样的:

cmake_minimum_required(VERSION 2.8.3)
FIND_PACKAGE(PythonInterp)
FIND_PACKAGE(PythonLibs)
FIND_PACKAGE(Boost COMPONENTS python)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})

PYTHON_ADD_MODULE(NativeLib CppProject)
FILE(COPY MyProject.py DESTINATION .) # See the whole tutorial to understand this line

最后,这是我在 MyProject.py 中的 Python 代码:

import NativeLib
# some preprocess
print (NativeLib.getTryString)

编写代码后,我创建了一个名为 build 的目录。在那个目录中,我运行了这个命令:

cmake -DCMAKE_BUILD_TYPE=Release ..

在那之后,在我运行我的 Python 代码之前,我确实成功了,最后,我运行了我的 Python 代码,但是出现了段错误!

有人可以帮我解决这个错误吗?

最佳答案

编译器需要您在程序中使用的所有符号在您使用它们之前进行声明。如果您使用尚未声明的符号,它将给您一个错误,因为它不知道它。

现在,当您使用 BOOST_PYTHON_MODULE 时,编译器不知道该符号,因此整个语句在语法上是错误的。

您必须包括定义 BOOST_PYTHON_MODULE 宏的 Boost 头文件,以及 boost::python::def

关于c++ - 使用boost python编译在python代码内部调用的c++代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57934947/

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