[英]Getting "error: cannot convert 'std::__cxx11::string* {aka std::__cxx11::basic_string<char>*}' to 'const char*' error while passing a path as argument
[英]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 ++編譯器。 我嘗試使用Google搜索該錯誤,但未找到任何有效的信息。
這是我構建環境的方式:
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()
修復此問題,但這將是很糟糕的事情,並且可能違反了某些組件的開源許可證。
至於為什么收到此錯誤,可能是與標准標准c ++庫混在一起了。 您似乎在openmpi
使用gcc
,在鏈接步驟中使用llvm
,這很奇怪。 另外,您要為gcc
強制使用c++11
,而不是llvm
。
您從哪里獲得這些構建說明? 您可能要查找一組更新的說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.