我在Ubuntu上使用Android NDK r7和eclipse Indigo。 我将我的java项目设置为使用C ++特性。 我在C ++端使用STL,所以我添加了
在Application.mk文件中APP_STL := gnustl_static
。
ndk-build成功编译我的代码并创建共享对象。
然而,eclipse索引器抱怨缺少STL符号。例如
“方法'push_back'无法解析”“符号'向量'无法解析 得到解决“
只有在编辑器中打开C ++文件时才会发生这种情况。 最终eclipse不会创建我的apk。 我添加了使用ndk(Properties => C / C ++ General => Code Analasys => Path& symbols)的gnu STL标头的路径:
android-ndk-r7/sources/cxx-stl/gnu-libstdc++/include android-ndk-r7/sources/cxx-stl/gnu-libstdc++/include/bits
目前的解决方法是关闭已打开的C ++文件以使eclipse满意。
有趣的是,eclipse索引器在
中找到的头文件正常工作机器人-NDK-R7 /平台/机器人-14 /弓形臂的/ usr /包括
有没有我忘记在日食中设置的东西?
答案 0 :(得分:24)
您必须将STL的路径添加到项目设置,以便Eclipse也将其编入索引。项目 - >属性 - > C / C ++一般 - >包括。这是我添加的内容:
<path_to_NDK>/sources/cxx-stl/gnu-libstdc++/include
<path_to_NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
<path_to_NDK>/platforms/android-9/arch-arm/usr/include
答案 1 :(得分:6)
有些人已经能够通过向smart pointers not working with Android NDK r8中提到的__GXX_EXPERIMENTAL_CXX0X__
添加{}来解决此问题。但这在某些版本的Eclipse中不起作用,例如我的Eclipse(Eclipse Juno v4.2)。
因此,作为一个解决方法,我去了Eclipse首选项 - &gt; C / C ++ - &gt;代码分析,然后我将一些问题的严重性从Error更改为Warning,因为我使用NDK来编译我的代码,所以这些只会影响Indexer。我更改了“符号未解决”并修复了我的错误,但您可能还想更改其他一些错误。起初它没有为我解决错误,直到我关闭&amp;重新打开C ++文件。右键单击项目并选择“索引 - &gt;重建”也可能有助于刷新它。
现在Eclipse将这些行突出显示为警告,并允许我继续构建&amp;跑步&amp;调试我的NDK应用程序。