gpt4 book ai didi

c++ - 使用 Boost.Python 从 DLL 动态加载 python 模块

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:31 24 4
gpt4 key购买 nike

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

因此,DLL X 调用 Python 代码,Python 代码导入模块 Y,该模块 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 中使用此方法。

关于c++ - 使用 Boost.Python 从 DLL 动态加载 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com