gpt4 book ai didi

python - Boost不将模块暴露给python

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

我正在使用我在网上找到的一些示例代码来尝试设置 libboost,这样我就可以使用 Python 代码调用 cpp 例程。 (我打算使用 python 为这个应用程序的后端编写我的 UI 和 cpp)Boost 使用起来似乎很简单,但它目前没有公开任何功能。

#include <boost/python.hpp>

char const* greet()
{
return "hello, world";
}

BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}

我使用 g++ -c hello.cpp -I/usr/include/python3.6/行编译它(最后一个 include 是必要的,因为我在 ubuntu 上,g++ 不能正确定位 python,而且我懒得将它添加到我的路径中)

import hello_ext
print(hello_ext.greet())

我使用 python3 运行它,我得到以下输出

  File "hello.py", line 1, in <module>
import hello_ext
ModuleNotFoundError: No module named 'hello_ext'

这对我来说意味着 Boost 没有正确公开我为其创建模块的 C++ 功能。我在这里错过了什么?我已经尝试在头文件中而不是在 cpp 文件中将功能公开给 python,结果相同。

此外,如果有人在查看这篇文章时遇到访问其模块中的功能的问题,但似乎该模块已公开,请确保 python 还没有具有相同名称的默认模块,该模块优先于你的模块。

最佳答案

根据 boost::python docs您的代码应编译为共享库以在 python 中使用:

g++ hello.cpp -I /usr/include/python3.6 -lboost_python-py36 -shared -fPIC -o hello_ext.so

请注意,共享库的名称必须与您的 python 模块的名称相同。您还忘记了将您的代码与 boost 库链接。

关于python - Boost不将模块暴露给python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512311/

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