1

私のマシンで友人のコードをコンパイルしていますが、次のエラーが発生し続けています。

 $ 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
4

1 に答える 1

0

const std::__cxx11::basic_string<char>AKAconst std::stringを に変換できないと言っていますconst char*。これは、コンパイラが報告する適切なエラーです。上記のように、 を使用してこれを修正できますc_str()が、それはひどいハックであり、一部のコンポーネントのオープン ソース ライセンスに違反する可能性があります。


このエラーが発生する理由については、標準の標準 C++ ライブラリとの取り違えである可能性があります。非常に奇妙なリンクステップにgccfor openmpiand forを使用しているようです。llvmさらに、 を強制していますが、 は強制c++11してgccいませんllvm

これらのビルド手順はどこで入手しましたか? 更新された一連の手順を参照することをお勧めします。

于 2015-06-09T21:52:34.280 に答える