chi*_*irp 5 c c++ python cython
我是 Cython 的新手,我正在尝试从该项目编译 Cython但没有成功。
通过这个 setup.py,
from distutils.core import setup, Extension
from Cython.Distutils import build_ext
from distutils.extension import Extension
sources_list = ["timgraph.pyx", "Graph.cpp", "InfGraph.cpp", "sfmt/SFMT.c"]
setup(ext_modules=[Extension("pytim",
sources=sources_list,
language="c++",
extra_compile_args=["-std=c++11"])
],
cmdclass={'build_ext':build_ext})
Run Code Online (Sandbox Code Playgroud)
我运行以下命令:
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
error: invalid argument '-std=c++11' not allowed with 'C/ObjC'
error: command 'clang' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
我正在运行 macOS High Sierra 10.13.2、Python 3.6.2、Cython 0.27.3 和 Apple LLVM 版本 9.0.0,以防有帮助。
编辑:我想这可能是因为尝试同时编译 C 和 C++,因为我可以运行C++ 的 Cython 示例并且工作正常。但我不知道如何解决 extra_compile_args 适用于所有源(包括“sfmt/SFMT.c”)的事实。
仅供记录,解决方案非常简单:extra_compile_args完全删除参数,但仍将语言参数设置为c++,即
from distutils.core import setup, Extension
from Cython.Distutils import build_ext
from distutils.extension import Extension
sources_list = ["timgraph.pyx", "Graph.cpp", "InfGraph.cpp", "sfmt/SFMT.c"]
setup(ext_modules=[Extension("pytim",
sources=sources_list,
language="c++")
],
cmdclass={'build_ext':build_ext})
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,这都会成功编译 C 和 C++。
| 归档时间: |
|
| 查看次数: |
2820 次 |
| 最近记录: |