我在 OSX 的 Eclipse 中使用 NDK r8b 将 Java 和本机 JNI C++ 代码混合用于 android 项目。我希望能够在 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)会显示头文件,即已解析。此外,大纲显示了“字符串”和“地图”头文件,双击它们时,它也会将标题带到最前面。
但是,构建并没有选择它们。我得到以下信息:
> 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
有谁知道还有什么可以尝试的。