NDK - 具有本机(JNI)C ++代码构建问题的Android Java

时间:2012-10-28 07:25:38

标签: android-ndk java-native-interface native

我在OSX中的Eclipse中使用Java和原生JNI C ++代码混合使用NDK r8b的android项目。我希望能够在std命名空间中使用常规C ++类(map,string)。

在Android.mk文件中添加了以下内容:

  

APP_STL:= stlport_shared

这里我也试过静态库。请参阅http://docs.huihoo.com/android/ndk/r5/CPLUSPLUS-SUPPORT.html

  

STLPORT_FORCE_REBUILD:= true

还尝试删除强制构建。

在C / C ++路径和变量中:

  

$ {NDKROOT} /来源/ 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

有没有人知道还有什么可以尝试。

1 个答案:

答案 0 :(得分:5)

ndk-build命令行上使用 V = 1 参数。这将回显所有已执行的命令,包括编译和链接,以及NDK构建的所有参数。

在您的情况下,可以在没有详细构建日志的情况下找到答案:

  

在Android.mk文件中添加了以下内容:

     

APP_STL := stlport_shared

这是你的错。您引用的文档解释了此设置应该进入Application.mk。此文件通常被视为可选。是的。您可以在命令行上指定APP_STL,而不是创建此文件:

ndk-build V=1 APP_STL=stlport_static

我不知道为什么以及Eclipse如何解析#include <string>地图