Я компилирую код друга на моей машине, и меня постоянно беспокоит эта ошибка:
$ mpic++ dummy_file_name.cpp
dummy_file_name.cpp: In member function 'bool dummy_name1::dummy_name2::python_convert(const StringMultiArray&, PyObject**)':
dummy_file_name.cpp:430:55:error: cannot convert 'const std::__cxx11::basic_string<char>' to 'const char*' for argument '1' to 'PyObject* PyString_FromString(const char*)'
PyList_SetItem(*dst, i, PyString_FromString(src[i]));
Что это значит? Как я могу диагностировать или лечить эту проблему? Я использую компилятор mpic ++. Я попытался погуглить эту ошибку, но я не нашел никакой полезной информации.
Вот как я построил свою среду:
brew reinstall gcc --without-multilib
export HOMEBREW_CC=gcc-5
export HOMEBREW_CXX=g++-5
brew install openmpi --build-form-source
brew install llvm --with-clang
Он говорит, что не может конвертировать const std::__cxx11::basic_string<char>
AKA const std::string
в const char*
, Это правильная ошибка для отчета компилятора. Как указано выше, вы можете исправить это, используя c_str()
, но это было бы ужасным взломом, и, возможно, нарушить лицензию с открытым исходным кодом какого-либо компонента.
Что касается того, почему вы получаете эту ошибку, это может быть путаница со стандартными стандартными библиотеками c ++. Вы, кажется, используете gcc
за openmpi
а также llvm
для шага ссылки, который очень странный. Кроме того, вы заставляете c++11
за gcc
, но не для llvm
,
Где вы взяли эти инструкции по сборке? Вы можете посмотреть обновленный набор инструкций.