我有一个非常基本的设置,可以尝试如何通过Cython将C++函数公开给Python。但是,我不断收到以下错误。我想念什么?

foo.obj : error LNK2001: unresolved external symbol cppFoo
C:\git\cythonTest\foo.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

关于python - 通过Cython的Python基本C++函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59691608/

10-11 16:52