OSX What does "error: cannot convert 'const std::__cxx11::basic_string<char>" mean?
OSX What does "error: cannot convert 'const std::__cxx11::basic_string<char>" mean?
我正在我的机器上编译一个朋友的代码,但我一直遇到这个错误:
$ 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>
又名 const std::string
转换为 const char*
。这是编译器报告的正确错误。如上所述,您可以使用 c_str()
来解决此问题,但这将是一个可怕的 hack,并且可能违反某些组件的开源许可证。
至于为什么会出现此错误,这可能是与标准标准 c++ 库的混淆。您似乎对 openmpi
使用 gcc
,对 link 步骤使用 llvm
,这很奇怪。此外,您为 gcc
强制 c++11
,但不为 llvm
.
您从哪里获得这些构建说明?您可能需要查找一组更新的说明。
我正在我的机器上编译一个朋友的代码,但我一直遇到这个错误:
$ 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>
又名 const std::string
转换为 const char*
。这是编译器报告的正确错误。如上所述,您可以使用 c_str()
来解决此问题,但这将是一个可怕的 hack,并且可能违反某些组件的开源许可证。
至于为什么会出现此错误,这可能是与标准标准 c++ 库的混淆。您似乎对 openmpi
使用 gcc
,对 link 步骤使用 llvm
,这很奇怪。此外,您为 gcc
强制 c++11
,但不为 llvm
.
您从哪里获得这些构建说明?您可能需要查找一组更新的说明。