在Android NDK中使用STL时,Eclipse索引器错误
Eclipse indexer errors when using STL with Android NDK
我在Ubuntu上使用带有eclipse Indigo的Android NDK r7。我将我的java项目设置为使用C++特性。我在C++端使用STL,所以我添加了
APP_STL := gnustl_static
在Application.mk文件中。
ndk构建成功编译了我的代码并创建了一个共享对象。
然而eclipse索引器抱怨缺少STL符号。例如
"无法解析方法"push_back""无法解析符号"vector"被解决"
只有当C++文件在编辑器中打开时才会发生这种情况。最终eclipse不会创建我的apk。我添加了与ndk一起发送的gnu STL头文件的路径(Properties=>C/C++General=>Code Analysis=>path&symbols):
android-ndk-r7/sources/cxx-stl/gnu-libstdc++/include android-ndk-r7/sources/cxx-stl/gnu-libstdc++/include/bits
当前的解决方法是关闭打开的C++文件以使eclipse满意。
有趣的是,eclipse索引器可以很好地处理中的头文件
android-ndk-r7/platforms/android-14/arch-arm/usr/include
有什么东西我忘了在eclipse中设置吗?
您必须将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
有些人已经能够通过将__GXX_EXPERIMENTAL_CXX0X__
添加到Eclipse来解决这个问题,如"智能指针不适用于Android NDK r8"中所述。但这在Eclipse的某些版本中不起作用,比如我的版本(Eclipse Juno v4.2)
因此,作为一个变通的黑客,我去了Eclipse Preferences->C/C++->Code Analysis,然后我将一些问题的严重性从Error更改为Warning,因为我无论如何都在使用NDK编译我的代码,所以这些只会影响Indexer。我更改了"Symbol is not resolve",它修复了我的错误,但您可能还想更改其他一些错误。起初它并没有为我修复错误,直到我关闭&重新打开C++文件。右键点击你的项目并选择"索引->重建"也可能有助于刷新它
现在Eclipse将这些行突出显示为警告,并允许我继续构建&运行&调试我的NDK应用程序。
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- 使用 Cmake 的 Eclipse IDE 项目中的索引 Qt5
- 从 Eclipse 索引中排除构建中包含的文件
- eclipse cdt索引c文件的结果与c 文件不同
- 可以在默认情况下关闭Eclipse C 索引器
- Eclipse (Juno) CDT 索引器:"Error while parsing..." Makefile 项目
- Eclipse CDT 在尝试索引头文件时崩溃
- Eclipse索引器没有使用Android NDK找到功能
- Eclipse 索引器显示误报语义错误
- Eclipse CDT C++ RDT 远程快速索引器,用于 AIX 不起作用
- 对于大型C++项目,建议的 Eclipse CDT 配置是什么(索引器需要很长时间)
- 在Android NDK中使用STL时,Eclipse索引器错误
- Eclipse CDT C/ c++索引器没有检测到一些类
- Eclipse CDT:强制索引条件编译的代码
- insight eclipse版索引器的CUDA 7.5问题