gpt4 book ai didi

python - C++ 和 Python 紧密集成

转载 作者:太空狗 更新时间:2023-10-29 21:14:27 24 4
gpt4 key购买 nike

我有 C++ 程序,我想用 Python 添加扩展系统。但要实现这一点,我必须将 Python 对象方法调用映射到 C++ 方法调用。这是否可能,如果是如何实现。

示例:
Python部分:

class Extension(AbstractExtension):
def __init__(self, cool_cpp_object):
self.o = cool_cpp_object

def some_method(self):
self.o.method_to_cpp()

C++部分:

class SomeClass : public AnotherClass
{
public:
void method_to_cpp();
}

我必须将 SomeClass 实例传递给 Extension 实例方法。谢谢。

最佳答案

有几种方法可以做到这一点(StoryTeller 正确地指出了 Boost::Python,并且还有 Swig)。就个人而言,我发现 Cython's C++ integration非常易于使用。

创建一些头文件,例如 classes.hpp,并在其中放入(连同守卫等):

class SomeClass : public AnotherClass
{
public:
void method_to_cpp();
}

以通常的方式将实现放在实现文件中。

现在使用导出的接口(interface)创建 Cython 文件:

cdef extern from "classes.hpp":
cdef cppclass SomeClass:
method_to_cpp()

和一个 Python 包装器:

cdef class PySomeClass:
cdef SomeClass obj

def method(self):
self.obj.method_to_cpp()

基本上就是这样。您可以像普通 Python 类一样导入和使用 PySomeClass

上面的链接应该解释如何构建所有文件。

关于python - C++ 和 Python 紧密集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40737558/

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