如何从C/C++;进入python并返回 我有一个用C++编写的程序,可以用Python的C API来扩展,用Python编写,程序中基本上有Python解释器,它可以加载包含一些钩子到各种事件的Python模块。

如何从C/C++;进入python并返回 我有一个用C++编写的程序,可以用Python的C API来扩展,用Python编写,程序中基本上有Python解释器,它可以加载包含一些钩子到各种事件的Python模块。,python,c++,c,Python,C++,C,我可以将简单的数据类型从C传递到python,例如字符串或整数。我可以用另一种方法来做,我可以调用Python模块创建的内部C++ API。但是,我不能做的是处理更复杂的数据类型,例如类。例如,我有一件事: class X { int a; int b; }; 我可以调用一些python钩子,如下所示: def some_hook(a, b): print(str(a + b)) 但我宁愿这样做 def some_hook(x): print(str(x.a + x.

我可以将简单的数据类型从C传递到python,例如字符串或整数。我可以用另一种方法来做,我可以调用Python模块创建的内部C++ API。但是,我不能做的是处理更复杂的数据类型,例如类。例如,我有一件事:

class X
{
    int a;
    int b;
};
我可以调用一些python钩子,如下所示:

def some_hook(a, b):
  print(str(a + b))
但我宁愿这样做

def some_hook(x):
  print(str(x.a + x.b))
我知道如何使用
PyObject\u CallObject
从C调用python函数,以及如何给它一些简单的python变量作为参数(比如整数或字符串)。但是我不知道如何从C/C++中构造python类,用数据填充它们,然后将它们作为参数传递给
PyObject\u CallObject

我的想法是创建一些像SWIG(SWI.org)这样的代理类,我将用C++类填充数据,然后再返回。我创建了一些.py文件,其中包含这些类的声明,但我仍然不知道如何从C/C++中实例化它们并填充它们?我也不知道该怎么做——将
PyObject
转换成C/C++类

<>强> >简单地说:我想能够将C++类转换成Python类,调用一个Python函数作为参数,然后调用Python中的其他函数,这个类只是一个C++ API,将Python类转换成C++。 关于如何从C调用python的一些背景阅读:


加载和使用Python扩展的应用程序C++的源代码:

你检查了Booo::Python吗?除非你真的想自己做,考虑一下,或者我喜欢使用SWIG,我只是看不出来。Swig允许通过python访问C/C++库,但我想用另一种方式。我想调用从C++中定义的python模块中的钩子(函数)。好的,我将检查Booo::Python,也许它可以做这个注释,我不想导出C/C++库中定义的函数,这样我就可以用Python调用它们,我想换一种方式,Python似乎使Python只能访问C++而不是C++来访问Python。