2

我有一个用 C++ 编写的 DLL,它使用 Boost.Python 来运行 Python 代码。Python 代码应该能够与实际应用程序(在 DLL 中)进行交互。是否可以将两者都放在一个库中,还是需要将两者分开?

因此,DLL X 调用 Python 代码,Python 代码导入同样位于 DLL X 中的模块 Y。

这是否可以使用 Python C API 或(最好)Boost.Python?像load_python_module("test", my_dll_handle)...

我看到 DLL 导出 PyInit_test,但我不知道调用它是否是个好主意,我什至不知道它期望什么参数。

4

1 回答 1

1

Python C-API 文档强烈暗示这是可能的(尽管我自己从未尝试过),使用 Python C-APIPyImport_AppendInittab函数。您之前使用要导入的模块的名称和指向初始化函数的指针调用该函数Py_Initialize,它们将对嵌入式代码可用,就好像它们是内置模块一样(它们仍然必须被导入)。

因为BOOST_PYTHON_MODULE(foo)宏只是创建了一个initfoo()函数,你应该也可以在 Boost.Python 中使用这个方法。

于 2012-05-12T23:06:39.987 回答