OSX Что означает «ошибка: невозможно преобразовать» const std :: __cxx11 :: basic_string & lt; char & gt; & quot; имею в виду?

Я компилирую код друга на моей машине, и меня постоянно беспокоит эта ошибка:

 $ 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

1

Решение

Он говорит, что не может конвертировать const std::__cxx11::basic_string<char> AKA const std::string в const char*, Это правильная ошибка для отчета компилятора. Как указано выше, вы можете исправить это, используя c_str(), но это было бы ужасным взломом, и, возможно, нарушить лицензию с открытым исходным кодом какого-либо компонента.


Что касается того, почему вы получаете эту ошибку, это может быть путаница со стандартными стандартными библиотеками c ++. Вы, кажется, используете gcc за openmpi а также llvm для шага ссылки, который очень странный. Кроме того, вы заставляете c++11 за gcc, но не для llvm,

Где вы взяли эти инструкции по сборке? Вы можете посмотреть обновленный набор инструкций.

1

Другие решения


По вопросам рекламы [email protected]