gpt4 book ai didi

Python C API - 从嵌入式 python 调用 C 函数(回调)

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:07 25 4
gpt4 key购买 nike

我有一个 .cpp 文件加载 python 文件并调用一个函数。我在 .cpp 中有一个记录器类,我想从 .py 文件中使用它。

例子:

# python-file.py

def FunctionCalledFromC_API():
log("some string")
log("some error", error)
log("some debug info", debug)
# etc...

还有.cpp

// cpp-file.cpp

// Load python file, do stuff...
PyObject *args = PyTuple_New(0);
PyObject_CallObject(pFunctionCalledFromC_API, args);
Py_DECREF(args);

我希望 .py 文件的 log("some string") 函数从 C++ 应用程序调用我的 logger.log(...) 函数。

最佳答案

正如 Markku K. 所建议的,我将我所有的应用程序都制作成了一个 DLL,我很快就会尝试。

这就是我要做的(对于有同样问题的人):

  1. 使我的应用程序成为一个 DLL
  2. 制作一个可执行文件来运行它(显而易见)
  3. 制作一个包含函数的 Python 文件(例如:logger.log())。该函数应调用 DLL 的等效函数。
  4. 不断“试错”,直到成功为止;)

编辑:

经过大量的“试错”,我找到了一种方法!

使用 boost::pythonexpose my API以及用于加载 .py 文件的标准 Python API 我完成了这项工作!但是我必须使用导入共享对象并调用主函数的 python 文件启动应用程序:(

无论如何,感谢 Markku K. 的帮助!

关于Python C API - 从嵌入式 python 调用 C 函数(回调),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957425/

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