Я работаю над некоторым кодом Cython, который использует некоторые структуры данных стандартной библиотеки С++, и я могу скомпилировать код для получения файлов *.cpp. Я делаю это, используя distutils со скриптом установки (см. код). Однако прямо сейчас я не могу создавать файлы *.so, и я не знаю, почему. Прежде чем мне понадобились какие-либо структуры данных C++, сценарий установки мог генерировать файлы *.so и файлы *.c. Теперь он просто генерирует файлы *.cpp, и я не могу импортировать их в остальные свои скрипты Python.
Мой сценарий установки был создан в соответствии с этой документацией: https://cython.readthedocs.io/en/latest/src/userguide/source_files_and_compilation.html
Дополнительные аргументы компиляции и языковые аргументы позволяют компилировать Cython, который включает C++.
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
import numpy
extensions=[
Extension("mesh",
sources=["optimized_mesh.pyx"],
include_dirs=[numpy.get_include()],
language="c++",
extra_compile_args=["-stdlib=libc++"])
]
setup(
ext_modules=cythonize(extensions)
)
Я ожидаю, что на выходе будут файлы *.cpp и *.so, но пока я могу получить только файл *.cpp.
РЕДАКТИРОВАТЬ:
Я выяснил, что происходит, первый аргумент в Extension
— это имя создаваемого общего объектного файла. Я искал общие объектные файлы с именами источников.
-fPIC -shared
для компиляции тегов, так вы обычно компилируете общую библиотеку. - person AdamTL   schedule 16.06.2019-fPIC -shared
в файлsetup.py
, но безуспешно. - person user1746082   schedule 16.06.2019