Basi c C ++ функция до Python через Cython - PullRequest
1 голос
/ 11 января 2020

У меня есть базовые настройки c, чтобы экспериментировать с тем, как представить функцию C ++ для Python через Cython. Тем не менее, я продолжаю получать следующую ошибку. Чего мне не хватает?

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.

1 Ответ

1 голос
/ 11 января 2020

Я нашел решение. cppFoo.cpp не был распознан как исходный файл. Добавление следующей строки вверху foo.pyx было достаточно.

# distutils: sources = cppFoo.cpp
...