![](/img/trans.png)
[英]Boost.Python and importing a dll, “The specified module could not be found”
[英]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.