gpt4 book ai didi

c++ - 如何链接到现有的 boost python 模块

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:45 25 4
gpt4 key购买 nike

我断断续续地想知道这个问题,但我从来没有真正得到一个明确的答案。是否有可能在 boost.python 框架内链接到另一个 boost.python 模块。

例如,我在 boost_python_module(libA) 中导出了类 A,在 boost_python_module(libB) 中导出了函数 B(A a)。是否可以在 libB 中指定链接到 libA 的 A。

看待这个问题的另一种方式是,现在我必须在一个模块中一次性生成所有绑定(bind)。是否可以在多个 boost_python_module 上增量生成绑定(bind)。

最佳答案

Boost.Python 处理您要求的方法是将您的包划分为编译单元as explained in the tutorial然后在实际声明模块的主编译单元中进行合并。

您不能在 Boost.Python 中链接独立模块,因为它们声明了在您加载模块时由 Python 执行的特定 Python 入口点。例如,如果 binary 模块名称是 mod.so,Python 解释器将查找名为 init_mod 的函数(即 >BOOST_PYTHON_MODULE(mod) declares) 并执行该函数的代码。在该函数的代码中,它期望找到对象(实例、类等)的 Python C-API 声明。

例如,如果您将 mod.so 二进制文件链接到另一个模块二进制文件(例如,foo.so),当 Python 加载 mod.so ,它将找到并执行init_mod,而忽略init_foo

关于c++ - 如何链接到现有的 boost python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3080185/

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