0

AndroidStudio の JNI と統合するために C++ でエンジンを記述しています。見つけたすべてのチュートリアルを読んで従います。

Cppファイルには、そのように初期化された中括弧で囲まれた2つのマップを含むヘッダーのインポートがあります(単なる例):

最初のものは2500行で初期化されています... 2番目のものはそのようなものです:

std::map <StateEnum, std::string> StateToString = {
  { state_one, "State 1" },
  { state_two, "State 2" },
  { state_three, "State 3" },
  { state_four, "State 4" }
};

アプリケーション.mk

APP_ABI     := all
APP_STL     := stlport_static
APP_CFLAGS  := -std=c++11 -fPIC

そして、ここにエラーがあります:

jni/My_header.h:line: エラー: '{{state_one, "State 1"}, {state_two, "State 2"}..} を '< ブレースで囲まれた初期化子リスト>' から 'std:: map< StateEnum, std::string>'

また、c++ ファイルをライブラリにコンパイルしてから、それを Android プロジェクトに統合しようとしました。そして結果は同じです。

誰でも私を助けることができます。2500 行のマップ初期化 (map.add(...) を使用) を 5000 行に変換したくありませんでした。

4

1 に答える 1

3

STLport の実装は古く、C++11 (特にブレース初期化子) をサポートしていません。動作させるには、GNU libstdc++ または LLVM libc++ 実装に切り替える必要があります。

APP_STL := gnustl_static # GNU libstdc++
# Or:
APP_STL := c++_static    # LLVM libc++
于 2015-07-15T10:41:53.033 に答える