У меня есть код C ++, который я хотел бы вызвать из Python. До сих пор у меня был весь мой код C ++ в одном файле и был один .pyx
файл, соответствующий этому коду. Так скажем, мой файл C ++ test_A.cpp
выглядит так
struct test{
float x;
}
и в моем test_A.pyx
файл у меня есть
cdef extern from "test_A.cpp"cdef cppstruct test:
float x
и мой setup.py
файл выглядит как
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
extensions = [Extension("test_A", ["test_A.pyx"],
include_dirs=[np.get_include()],
extra_compile_args=["-std=c++11"],
extra_link_args=[],
language="c++")]
setup(ext_modules = cythonize(extensions))
Это работает как надо, но теперь я хочу разделить свой файл для лучшей читабельности и не могу понять, как скомпилировать код. Скажи теперь у меня второй файл test_B.cpp
что я включаю в test_A.cpp
#include "test_B.h"
struct test{
test x;
test_B y;
}
как мне теперь изменить мой setup.py
файл такой, что компилируется test_A.cpp
но потом также компилирует и ссылки test_B.cpp
и все функции, вызываемые из test_a.cpp
? Должен ли я написать второй .pyx
файл для test_B.cpp
?
Спасибо
Задача ещё не решена.
Других решений пока нет …