我正在研究一些使用某些C ++标准库数据结构的Cython代码,并且能够编译该代码以获取* .cpp文件。我正在将distutils与安装脚本一起使用(请参见代码)。但是现在我无法生成* .so文件,而且我不确定为什么。在需要任何C ++数据结构之前,安装脚本可以生成* .so文件和* .c文件。现在,它仅生成* .cpp文件,而我无法在其余的python脚本中导入它们。
我的安装脚本与以下文档一起制成: https://cython.readthedocs.io/en/latest/src/userguide/source_files_and_compilation.html
额外的编译参数和语言参数允许包含c ++的Cython编译
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
中的第一个参数是要创建的共享库文件的名称。我正在寻找带有源名称的共享对象文件。
答案 0 :(得分:0)
Extension
中的第一个参数定义将要创建的共享库的名称。如果有多个编译源,则尽管将创建单个*.c
或*.cpp
文件,但不会为每个这些源创建单独的共享库文件。