Я оборачиваю класс C++ в Python и не могу скомпилировать какие-либо функции C++11 с модулем Cython.
Все компилируется нормально при компиляции только C++. Но когда я запускаю этот setup.py ниже:
setup(
ext_modules = cythonize(
"marketdata.pyx", # our Cython source
sources=["cpp/OBwrapper.cpp, cpp/OrderBook/orderbook.h, cpp/OrderBook/orderbook.cpp"], # additional source file(s)
language="c++", # generate C++ code
extra_compile_args=["-std=c++11"]
))
В моем заголовке файла .pyx:
# distutils: language = c++
# distutils: sources = cpp/OBwrapper.cpp cpp/OrderBook/orderbook.cpp
Я получаю массу ошибок, связанных с тем, что они не распознают команды С++ 11, такие как «авто».
Например:
cpp/OrderBook/orderbook.cpp(168) : error C2065: 'nullptr' : undeclared identifier
Как я могу заставить это работать?
-std=c++11
— это вариант компиляции GNU. - person Fred Larson   schedule 05.12.2014cythonize
просто игнорируетextra_compile_args
. См. также этот ответ. - person bluenote10   schedule 19.09.2016error C2065
— это сообщение об ошибке Visual Studio. Я был бы удивлен, увидев это в Linux. - person Fred Larson   schedule 20.09.2016-std=c++11
. Хотя вы говорите, чтоcythonize
на самом деле действительно передаетextra_compile_args
компилятору, и ошибка вызвана конкретным компилятором... - person bluenote10   schedule 20.09.2016-std=c++11
будет применяться к GNU, и мне кажется, что у MSVC даже не было переключателя стандартной версии до Visual C++ 2015 Update 3. Я ничего не знаю оcythonize
. - person Fred Larson   schedule 20.09.2016