1

私の問題の始まりは、Cocos2d-x で正規表現を使用しようとしていることです。何らかの理由で、std::tr1::regex は C++98 では動作しないため、std::regex を C++11 で (他の C++11 機能と共に) 使用しようとしています。Xcode で C++ のバージョンを変更するのは本当に簡単なので、これは現在 iOS で動作していますが、これを Android で動作させるにはあらゆる種類の問題があります。

gnustl_static ライブラリで NDK の r8e バージョンを使用しています。ツールチェーンのバージョンを(デフォルトに加えて)clangに設定LOCAL_CPPFLAGS += -std=c++11しようとしました。ツールチェーンに関係なく、コードをコンパイルできるようになりましたが、std::regex オブジェクトを作成しようとするとクラッシュしますstd::regex reg1("[a-z][0-3]*");Android NDK 拡張ライブラリで C++11 を動作させることができる人もいるようです(「最小限の C++ ランタイム サポート ライブラリ」ではありません) ですが、わかりません。私は多くのアイデアを読み、それらのほとんどを試しました。そして、NDK ドキュメントの CHANGES.html からの次のようないくつかの手がかりを見てきました。

    Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11

これがどのように組み合わされるかについて私は十分に知らないので、誰かが私を正しい方向に向けることができますか? ここで何が欠けていますか?

4

3 に答える 3

3

Application.mk ファイルを開き、最後に次の 2 行を追加します。

APP_CPPFLAGS += -std=c++11
NDK_TOOLCHAIN_VERSION=4.7

:NDKのバージョンr8eを使用していると述べたように、必要なツールチェーンのバージョンは4.7です。r9であれば4.8に設定できます。

お役に立てれば。

于 2013-10-05T21:34:05.380 に答える
0

あなたのandroid.mkに追加

LOCAL_CPPFLAGS += -std=gnu++0x
于 2013-10-01T23:22:28.630 に答える