OSX "error: cannot convert 'const std::__cxx11::basic_string<char>"是什么意思?
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()
来修复此问题,但这将是一个可怕的黑客攻击,可能会违反某些组件的开源许可证。
至于为什么会出现这个错误,可能是与标准c++库混淆了。您似乎将gcc
用于openmpi
,将llvm
用于链接步骤,这非常奇怪。此外,您将强制gcc
使用c++11
,但不强制llvm
使用。
你从哪里得到这些构建说明的?您可能需要查找一组更新的指令。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 为std::string的某个索引赋值
- <<操作员在下面的行中工作
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 使用char类型将decimal转换为string,将string转换为decimal
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 将向量解析<string>为字符串
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 如何更改大小(std::string)
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- std::string 的对象真的可以移动吗?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数