75

C ++ 11をAndroidに統合するにはどうすればよいですか?

4

4 に答える 4

70

ここでの主な答えにはC++11の実験的なサポートが含まれているようで、C++11はもう実験的ではありません。

コマンドラインNDKサポートを使用している場合(Java用にIDEAコミュニティエディション13を使用しています)、jni/Application.mkAPI19(OSX ML上)でC++11サポートを取得するためにこれを入力する必要がありました。

NDK_TOOLCHAIN_VERSION := 4.8
# APP_STL := stlport_shared  --> does not seem to contain C++11 features
APP_STL := gnustl_shared

# Enable c++11 extentions in source code
APP_CPPFLAGS += -std=c++11

ここここから派生。

于 2014-01-27T16:59:40.203 に答える
37

まず、ツールチェーンが「CrossGCC」であることを確認する必要があります。Linuxではデフォルトでしたが、MacOSXLionではありませんでした。

これを行うには、[プロジェクトのプロパティ]> [C /C++ビルド]>[ツールチェーンエディター]に移動します。「現在のツールチェーン」は「 CrossGCC」に設定する必要があります。[互換性のあるツールチェーンのみを表示する]チェックボックスをオフにする必要がある場合があります。

次に、Android.mkのLOCAL_CFLAGSにオプションを追加します。

LOCAL_CFLAGS := -std=gnu++11

次に、対応する新しいシンボル( "std :: unordered_map"など)の場所についてEclipseに通知する必要があります。「jni」>プロパティ>C/C++一般->パスとシンボル->シンボル->GNUC ++を右クリックし、次のシンボルを追加します(「追加...」をクリックして)。

Name: __GXX_EXPERIMENTAL_CXX0X__
Value:

(つまり、「値」を空にします)

于 2013-03-25T13:33:32.353 に答える
7

gradle-experimental-pluginを使用している場合は、 build.gradleファイルでこれを設定することもできます。

android.ndk {
    moduleName = "hello-android-jni"
    stl = "stlport_shared"
    cppFlags.add("-std=c++11")
}
于 2016-03-30T21:24:34.733 に答える
1

最新のgradle-experimental- plugin0.8.0-alpha4を使用して、 app/build.gradleに追加します。

model {
    android {
        ndk {
            moduleName "native"
            CFlags.add("-std=c11") // Enable C11 support
            ldLibs.add("log")
        }
    }
}
于 2016-07-03T14:25:50.710 に答える