- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我断断续续地想知道这个问题,但我从来没有真正得到一个明确的答案。是否有可能在 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/
我是一名优秀的程序员,十分优秀!