繁体   English   中英

使用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之前使用要导入的模块的名称和指向初始函数的指针来调用该函数,然后嵌入式代码就可以使用它们,就像它们是内置模块一样(它们仍然必须是内置模块)。进口)。

因为BOOST_PYTHON_MODULE(foo)宏仅创建了一个initfoo()函数,所以您也应该能够在Boost.Python中使用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM