C++ 在c++;使用默认api?

C++ 在c++;使用默认api?,c++,python-2.7,C++,Python 2.7,假设我有一个函数 def pyfunc(): print("ayy lmao") return 4 我想用c来称呼它++ int j = (int)python.pyfunc(); 我如何做? 你可能想看看这个:,为了从C++调用Python函数,你必须嵌入Python。 在C++应用程序中。为此,您必须: 加载Python DLL。如何做到这一点取决于系统: Windows下的LoadLibrary,Unix下的dlopen。如果Python DLL是 在您用于DLL的常用

假设我有一个函数

def pyfunc():
    print("ayy lmao")
    return 4
我想用c来称呼它++

int j = (int)python.pyfunc();

<>我如何做?

你可能想看看这个:

,为了从C++调用Python函数,你必须嵌入Python。 在C++应用程序中。为此,您必须:

  • 加载Python DLL。如何做到这一点取决于系统: Windows下的
    LoadLibrary
    ,Unix下的
    dlopen
    。如果Python DLL是 在您用于DLL的常用路径中(
    %path%
    在Windows下,
    LD\u LIBRARY\u PATH
    在Unix下),如果您尝试,这将自动发生 调用Python C接口中的任何函数。手动加载将 在版本等方面给你更多的控制权

  • 加载库后,必须调用函数
    Py\u Initialize()
    对其进行初始化。你可能想打个电话
    Py\u SetProgramName()
    Py\u SetPythonHome()
    首先建立 环境

  • 您的函数位于模块中,因此您必须加载该函数:
    PyImport\u导入模块
    。如果模块不在标准路径中, 您必须将其位置添加到
    sys.path
    :使用
    PyImport\u ImportModule
    获取模块
    “sys”
    ,然后
    PyObject\u GetAttrString
    获取属性
    “path”
    。路径 属性是一个列表,因此可以使用任何列表函数添加 需要什么就做什么

  • 函数是模块的一个属性,因此使用
    PyObject\u GetAttrString
    ,以获取 作用一旦你得到了,你就把参数打包成一个元组或者 字典(用于关键字参数),并使用
    PyObject\u Call
    调用 它

  • 所有的功能和所有必要的东西都有文档记录 (事实上非常好)在。你会 对“嵌入Python”和 “导入模块”,以及更通用的实用程序(“对象 协议等)。您还需要了解一般原则 关于Python/CAPI是如何工作的,比如参考 计算和借用与拥有的参考文献;你可能会想读书 导言中的所有部分都是首先介绍的

    当然,尽管文档的总体质量很高,但是 不完美。有几次,我不得不投入到Python中 消息来源,以查明发生了什么。(通常,当我 Python返回一个错误,以了解它实际上在抱怨什么
    去你喜欢的搜索引擎搜索“C++ Python API”,我确信你会有点。尝试,证明没有结果,这就是为什么我去看,所以你没有找到OR(在我的搜索前两个链接)或关于它使它非常容易嵌入或扩展Python在C++中。我只是需要一些帮助,没必要屈尊俯就。我是这么做的,我很难理解这一切,你能帮我解释一下吗?