Cython -STD = C 11错误,使用C和C

Cython -std=c++11 error, using both C and C++

本文关键字:使用 错误 -STD Cython      更新时间:2023-10-16

我是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})

我运行以下内容:

python setup.py build_ext --inplace

并获取以下错误:

error: invalid argument '-std=c++11' not allowed with 'C/ObjC'
error: command 'clang' failed with exit status 1

我正在运行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})

无论出于何种原因,这都成功地编译了C 。

与Python 3.7和3.6.5和Laters遇到了相同的问题...

尝试运行时会出现错误:

pip install python-crfsuite

是从那里的setup.py文件派生的...

错误:

error: invalid argument '-std=c99' not allowed with 'C++/ObjC++' 

唯一对我有用的是用Python 3.6.4

运行它

转到这里安装3.6.4,然后重试。

或在此处使用conda/anaconda进行

如果您在Python3.7上面临着PKG的问题,并且Mac尝试使用以下方式解决它:

Python位置在Mac OSX