C++11 をサポートする 3 つのプロジェクトのワークスペースをコンパイルしようとしています。この一連のプロジェクトは、LLVM コンパイラの既定値を使用して正常にコンパイルおよびリンクされています。さらに、c++ コードは以前に g++、llvm、msvc、sun、irix などを含む多くのコンパイラでコンパイルされているため、非常にクリーンなコードです。
ワークスペースのビルド設定の C++ 言語の方言セクションの下に、3 つの項目があります。
c 言語方言
c++ 言語方言
c++ 標準ライブラリ
設定の使用:
c 言語の方言: コンパイラのデフォルト
c++ 言語の方言: コンパイラのデフォルト
c++ 標準ライブラリ: libc++ (c++11 をサポートする LLVM c++ 標準ライブラリ)
正常にコンパイルできますが、多くのリンク エラーが発生します。一部は独自の関数からのもので、一部は標準関数からのものです。標準関数へのリンク エラーの例を次に示します。
(null): "std::string::find_last_of(char const*, unsigned long) const"、参照元: (null): "std::string::size() const"、参照元:
間違った標準ライブラリにリンクしていることは明らかだったので、上記のさまざまなオプションを変更して調査しました。方言を -std=c++11 に変更すると、コンパイルが壊れました。自分に合った組み合わせが見つかりませんでした。
何が間違っているのか教えていただけますか?
編集:これを行う私の動機は、objective-c とインターフェイスする C++ コードで std::thread を使用したい (そしてその C++ コードを引き続き移植可能にする) ことです。