1

OSX の Eclipse で、NDK r8b を使用して、Android プロジェクトに Java とネイティブ JNI C++ コードを組み合わせて使用​​しています。std 名前空間で通常の C++ クラス (マップ、文字列) を使用できるようにしたいと考えています。

Android.mk ファイルに、次のものが追加されました。

APP_STL := stlport_shared

ここで静的ライブラリも試しました。http://docs.huihoo.com/android/ndk/r5/CPLUSPLUS-SUPPORT.htmlを参照してください。

STLPORT_FORCE_REBUILD := 真

また、強制ビルドを削除しようとしました。

C/C++ パスと変数:

${NDKROOT}/sources/cxx-stl/stlport/stlport

「map」および「string」ヘッダーが .cpp ファイルに含まれていました。std::string と std::map を使用できます。アシスタントはそれらを拾います。定義を検索すると (Eclipse では F3)、ヘッダー ファイルが表示されます。つまり、解決されます。また、アウトラインには「string」および「map」ヘッダー ファイルが表示され、それらをダブルクリックすると、ヘッダーも前面に表示されます。

ただし、ビルドはそれらを取得しません。私は以下を取得します:

> ndk-build
> Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
> Gdbsetup       : libs/armeabi/gdb.setup
> Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi-v7a/gdbserver
> Gdbsetup       : libs/armeabi-v7a/gdb.setup
> Compile++ arm    : ImageTargets <= ImageTargets.cpp
> xxx/Project/Code/MyImageTarget/jni/ImageTargets.cpp:20:18: fatal error: string: No such file > or directory
> compilation terminated.
> make: *** [xxx/Project/Code/MyImageTarget/obj/local/armeabi/objs->    debug/ImageTargets/ImageTargets.o] Error 1

他に何を試すことができるか、誰にもわかりません。

4

1 に答える 1

5

コマンド ラインでV=1パラメータを使用します。ndk-buildこれにより、コンパイルとリンクを含む実行されたすべてのコマンドが、NDK ビルドによって割り当てられるすべてのパラメーターとともにエコーされます。

あなたの場合、答えは詳細なビルドログなしで見つけることができます:

Android.mk ファイルに、次のものが追加されました。

APP_STL := stlport_shared

これはあなたの間違いです。あなたが引用したドキュメントは、この設定が に入る必要があることを説明していますApplication.mk。通常、このファイルはオプションと見なされます。はい、そうです。APP_STLこのファイルを作成する代わりに、コマンド ラインで次のように指定できます。

ndk-build V=1 APP_STL=stlport_static

#include <string>Eclipse が解決またはマップする理由と方法がわかりません。

于 2012-10-28T21:36:09.167 に答える