【问题标题】:Eclipse indexer errors when using STL with Android NDK将 STL 与 Android NDK 一起使用时出现 Eclipse 索引器错误
【发布时间】:2012-02-21 10:15:38
【问题描述】:

我在 Ubuntu 上使用带有 Eclipse Indigo 的 Android NDK r7。 我将我的 java 项目设置为使用 C++ 特性。 我在 C++ 端使用 STL,所以我添加了

APP_STL := gnustl_static

在 Application.mk 文件中。

ndk-build 成功编译了我的代码并创建了一个共享对象。

但是 Eclipse 索引器抱怨缺少 STL 符号。例如

“方法‘push_back’无法解析”“符号‘向量’无法解析 解决”

只有在编辑器中打开 C++ 文件时才会发生这种情况。 最终eclipse不会创建我的apk。 我添加了 ndk 随附的 gnu STL 标头的路径(属性 => C/C++ 常规 => 代码分析 => 路径和符号):

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 中设置的吗?

【问题讨论】:

  • 您只是不应该将它添加到代码分析中,而是添加到 General->Includes。看我的回答。
  • 在此处查看我的答案:stackoverflow.com/a/22935387/1525238 了解 Eclipse 中的完整索引功能。

标签: android c++ eclipse android-ndk


【解决方案1】:

您必须将 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

【讨论】:

  • 我错过了这个&lt;path_to_NDK&gt;/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include 我在属性 => C/C++ 常规 => 代码分析 => 路径和符号中添加了它,它修复了我的错误。
  • 如果为所有架构开发 arm x86 和 misp 会怎样?
  • @Safareli:您可能应该只选择其中一个并添加它。我想不同架构的标题基本相同,所以这应该不是一个大问题。
  • @fnc12:欢迎。在只有两个小时的想法中找到平静:)
【解决方案2】:

如“smart pointers not working with Android NDK r8”中所述,某些人已经能够通过将__GXX_EXPERIMENTAL_CXX0X__ 添加到Eclipse 来解决此问题。但这在某些版本的 Eclipse 中不起作用,例如我的版本(Eclipse Juno v4.2)。

所以作为一种变通方法,我去了 Eclipse Preferences -> C/C++ -> Code Analysis,然后我将一些问题的严重性从 Error 更改为 Warning,因为无论如何我都在使用 NDK 编译我的代码所以这些只影响索引器。我更改了“符号未解析”并修复了我的错误,但您可能还想更改其他一些。起初它没有为我修复错误,直到我关闭并重新打开 C++ 文件。右键单击您的项目并选择“索引 -> 重建”也可能有助于刷新它。

现在 Eclipse 将这些行突出显示为警告,并允许我继续构建、运行和调试我的 NDK 应用程序。

【讨论】:

  • 谢谢兄弟,你救了我一天(或两天)!
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2017-07-08
  • 2014-05-17
  • 2018-12-23
  • 2013-02-18
  • 2012-03-25
相关资源
最近更新 更多