使用 Boost.Python 从 DLL 动态加载 python 模块
Dynamically loading a python module from a DLL with Boost.Python
我有一个用C++编写的DLL,它使用Boost.Python来运行Python代码。Python 代码应该能够与实际应用程序(在 DLL 中)交互。是否可以将两者放在一个库中,还是需要将两者分开?
所以,DLL X 调用 Python 代码,Python 代码导入模块 Y,它也位于 DLL X 中。
使用Python C API或(最好是)Boost.Python可以做到这一点吗?像load_python_module("test", my_dll_handle)
...
我看到DLL导出PyInit_test,但我不知道只调用它是否是一个好主意,我什至不知道它期望什么参数。
Python C-API
文档强烈暗示这是可能的(尽管我自己从未尝试过),使用 Python C-API PyImport_AppendInittab
函数。 在Py_Initialize
之前调用该函数,使用要导入的模块的名称和指向 init 函数的指针,它们将可供嵌入式代码使用,就好像它们是内置模块一样(它们仍然必须导入)。
因为BOOST_PYTHON_MODULE(foo)
宏只是创建一个initfoo()
函数,所以你应该能够在 Boost.Python 中使用此方法。
相关文章:
- 如何在C++中使用pybind11加载一个pickle python列表
- Python ctypes:不会按预期加载 dll
- 如何将经过训练的机器学习模型保存在python中并将其加载到C++中进行预测?
- 无法使用 python ctypes 加载C++共享库
- 如何在python中加载C # / C++ dll?
- 保存在(Python)tensorflow中的权重未加载到C++tf中
- 尝试在 python 中正确加载和使用 dll 文件
- 将数据保存在C++中,从 Python 加载 - 推荐的数据格式
- 使用 Python "cPickle.load"加载C++编写的二进制文件时的 EOFError
- 无法在 Python 3.5 上导入 cv2 DLL 加载失败
- 在共享C++库中加载共享库时C++未定义的符号,该库本身由 Python 加载
- 在Python中加载共享库时未定义的符号
- 可以加载C/C++和Python插件的应用程序
- 无法在Python中加载C DLL
- 在Python脚本中加载.SO文件时未定义的符号错误
- Python C API-重新加载模块
- 如何在 Python 中从 SXS 加载 C DLL
- 使用 Boost.Python 从 DLL 动态加载 python 模块
- 扫描目录以从c++加载Python插件
- 在3.3中加载python模块时,我使用什么代替PyString_AsString ?