15

私はAndroid NDK r8dを使用しており、Junoを日食しています。Eclipse のネイティブ Android プロジェクトで、、、、などのC mutex++ 11 を使用する C++ コードをコンパイルしようとしています。lock_guardshared_ptr

次のようなエラーが表示されます。

「エラー: 'shared_ptr' は 'std' のメンバーではありません」

「致命的なエラー: ミューテックス: そのようなファイルまたはディレクトリはありません」

ここで同様の質問に出くわしました。彼らにはうまくいくようですが、そこにある説明は完全ではないので、私にはうまくいきません。

ファイルにandを追加"NDK_TOOLCHAIN_VERSION=4.7"しました。それでも、コンパイルされません。Application.mk"LOCAL_CFLAGS += -std=c++11"Android.mk

上記のリンクでは、次のように書かれています。

「標準ライブラリ インクルード パス (/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include など) がターゲット設定にあることを確認してください。」

どのように、どこに挿入しますか?

Eclipse IDE でもエラーが発生します (コンパイル前のソースで)。それらを解決するために定義する必要"__GXX_EXPERIMENTAL_CXX0X__"があることは知っていますが、どこに置くべきかわかりません。

したがって、誰かがC++ 11でEclipseをコンパイルして動作させる方法の完全な説明を含む回答を投稿できれば、それは素晴らしいことです.

4

2 に答える 2

6

あなたの最初の質問について:

  1. [プロジェクト]>[プロパティ]>[C/C++一般]/[パスとシンボル]に移動します

  2. [含める]タブで、適切なディレクトリを追加します(例:/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include)

2番目の質問についても、私は答えを探しています。EclipseでGXX_EXPERIMENTAL_CXX0Xマクロを定義する方法は完全に明確ではありません。

「事前定義されたマクロとしてインデクサーに追加する」必要があると言う人もいますが、それを実装する方法を見つけることができなかったようです...

「C/C++一般/パスとシンボル/シンボル/GNUC ++」に追加する必要があることを他の場所で読みましたが、私のバージョンのIndigoに「シンボル/GNUC++」の部分が見つかりません。

于 2013-03-11T11:12:44.827 に答える
0

Eclipse を開始する前に環境変数 NDK_TOOLCHAIN_VERSION=4.8 をエクスポートすると、この問題を解決できることがわかりました。

NDK_TOOLCHAIN_VERSION が定義されていない場合、Eclipse は ndk のデフォルト ツールチェーン バージョン 4.6 を使用します。gcc は、このバージョンがマルチスレッドなどのすべての c++11 の将来をサポートしていません。

于 2015-05-23T14:35:03.520 に答える