用cython将c++代码编译成pyd

compile c++ code into pyd with cython

Cython 将类似于 python 的代码编译为 C++ 代码,然后使用 gcc/g++ 将其编译为类似于 pyd 的库。

假设我会用纯 C++ 编写代码,然后将其编译成 pyd 以在 Python 中使用它,例如假设我有以下 C++ 模块

int sum(int a, int b){
    return a + b
}

是否可以在不使用 PyObject、Ctype 等东西的情况下将该代码编译成 pyd?还是代码必须首先使用 Cython 语法编写才能与 Python 兼容?

我不是这方面的专家,但由于还没有人回答,这是我的看法:

如果你想避免在 C 中使用 PyObject 结构和 "Python.h",你应该使用 cython。

麻烦的是 **.pyd 是一个特别准备的 DLL,它公开了 import() 友好的接口,我认为,包括返回 PyObjects。

但是在普通 DLL 或共享对象库上使用 ctypes 并不难:

>>> import ctypes
>>> mysum = ctypes.cdll.LoadLibrary("mysum.so") # Or DLL
>>> print mysum.sum(2, 3)
5

您只需导出 sum 函数即可从动态库中使用并编译您的代码。