通过Cython对Python的基本C++函数

Basic C++ function to Python via Cython

本文关键字:C++ 函数 Cython Python 通过      更新时间:2023-10-16

我有一个非常基本的设置来试验如何通过Cython向Python公开C++函数。但是,我不断收到以下错误。我错过了什么?

foo.obj : error LNK2001: unresolved external symbol cppFoo
C:gitcythonTestfoo.cp38-win_amd64.pyd : fatal error LNK1120: 1 unresolved externals

cppFoo.h

#ifndef FOO_H
#define FOO_H
double cppFoo(double x, int y);
#endif

cppFoo.cpp

#include "cppFoo.h"
double cppFoo(double x, int y)
{
return 2 * x + y;
}

cfoo.pxd

cdef extern from "cppFoo.h":
double cppFoo(double x, int y)

foo.pyx

from cfoo cimport cppFoo
def pyFoo(double x, int y):
return cppFoo(x, y)

setup.py

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("foo.pyx"), requires=['Cython'])

python setup.py clean build_ext --inplace一起跑步。

我找到了解决方案。cppFoo.cpp未被识别为源文件。在foo.pyx的顶部添加以下行就足够了。

# distutils: sources = cppFoo.cpp