错误:'__NDK_FPABI__'不是一种类型。

3
在编译本地代码库时,我遇到了以下错误 -
<NDK-HOME>/platforms/android-17/arch-arm/usr/include/jni.h:235:68: error: expected ';' at end of member declaration
<NDK-HOME>/platforms/android-17/arch-arm/usr/include/jni.h:235:70: error: '\__NDK_FPABI__' does not name a type
...

有大量重复。

平台相关细节如下 -

Native OS: Windows 7 (64 bit) with Cygwin64
NDK Version: r9c

这里曾经报告过一个类似的问题(链接)。然而,即使修改了LOCAL_CFLAGS,我仍然找不到中间文件。

想知道是否有人已经遇到过这个问题,如果有,你们有解决方法吗?

1个回答

3

好的,终于解决了这些__NDK_FPABI__错误,我的本地代码编译得很好。确实,在中间文件(*.i和*.ii)中有一些微妙的提示,正如我之前发布的帖子中Andrew所建议的那样; 这些通常与找到适当的头文件有关。一旦进行了相关更改,事情就像魔法一样运作。

在调试此问题时我学到了几件事情 -

  • 问题与头文件有关。某些头文件从/usr/include中被选取,而本应从$NDK_HOME/platform/$ANDROID_VERSION/$ARCH/usr/include中选取。在Android makefile中进行必要的更改可以为我解决问题。
  • 永远不要添加热修复到NDK文件中。长期来看,这会让你的生活变得更加轻松。
  • 应该在$PROJECT_ROOT中查找中间文件(*.i、*.ii、*s和其他一些文件),而不是在$PROJECT_ROOT/jni中查找(假设本地代码位于那里)。
  • 最新版本的NDK,即ndk-r9d修复了与__NDK_FPABI__相关错误的一些问题。

希望这可以帮到你!


我找不到*.i或*.ii中间文件,有什么提示吗?编辑:算了,你已经给了提示,在$PROJECT_ROOT而不是$PROJECT_ROOT/jni中查找;现在找到了! - Tony Wickham
看起来我也遇到了同样的问题,某些文件被从C:\cygwin\usr\include中获取,而不是从你提供的NDK路径中获取。然而,我不确定如何在Android makefile中进行“必要的更改”以解决这个问题。 - Tony Wickham
1
好的,看起来将这些行添加到Android.mk中解决了这个问题:LOCAL_CFLAGS := -IC:\Users\Tony\src\android-ndk-r10c\platforms\android-9\arch-arm\usr\include \ -IC:\Users\Tony\src\android-ndk-r10c\platforms\android-9\arch-arm\usr\include\sys - Tony Wickham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接