__ANDROID__宏突然没有定义

La *_*bla 4 macros android android-ndk

我正在开发一个使用NDK的应用程序(所有我写的都发生在r6b和r8d上)

一切都很好,我想开始尝试调试我的C代码.

我按照这个http://tools.android.com/recent/usingthendpplugin教程,但NDK_DEBUG = 1标记到我的构建命令,突然我开始在代码中出现错误,即使在删除该标记后也没有消失,从Android 4.2更改. 2回到2.2,更改我正在使用的NDK,或者我能想到的任何其他内容.

现在问题出现在这样的语句中

#ifdef __ANDROID__
some cool android code
#else
some pretty awesome iOS code
#endif
Run Code Online (Sandbox Code Playgroud)

会发生什么事情__ANDROID__由于某种原因没有定义,导致eclipse并ndk-build尝试编译iOS代码而不是Android代码

恢复我所做的一切似乎没有任何效果.重启eclipse并不是很好.清理项目,完全删除libsobj目录也不起作用..

有什么建议?

谢谢!

编辑:

也许值得添加构建本身,使用ndk-build成功完成.我认为这可能是一个日食问题,但即使如此,它仍然是一个错误,我无法启动应用程序

此外,以防万一,重新启动计算机也无法正常工作.

编辑2:问题存在于通过网络运行相同工作区的另一台计算机上,我的猜测是与工作区相关的东西,所以我尝试删除.metadata文件夹并再次添加项目.

删除.metedata文件夹第一次修复它,但几分钟后(我设法在我的平板电脑上构建和运行应用程序)同样的问题返回,并删除.metadata没有工作

编辑3:

仍然没有去.

但是,我可以确认这不是项目特定的问题,因为所有在eclipse中具有Native支持的项目现在都会这样做.

其他不起作用的东西:

  • 创建一个空项目,添加Native支持.
  • 完全更改为另一个不相关的工作区并执行上述测试
  • 下载新版eclipse(juno),CDT&ADT(正在使用eclipse ADT包)

del*_*eil 9

你知道吗:

  • 当您使用Android.mk文件时ndk-build,ANDROID宏是预定义的(-DANDROID在使用详细输出构建时请参阅额外的C标志),
  • 但是如果你使用的是Android Standalone Toolchain,那么__ANDROID__就是预定义的.

所以我建议你使用:

#if defined(ANDROID) || defined(__ANDROID__)
  /* ... */
#endif
Run Code Online (Sandbox Code Playgroud)


Анд*_*шев 5

显然__ANDROID__是一个特定的GCC 宏,它应该在提供正确选项时在内部定义。但是,由于对选项的控制主要委托给 NDK,因此不应依赖于__ANDROID__曾经定义过的宏。就我们所知(或关心)而言,NDK 背后的编译器可能不是 GCC。使用 NDK 时,请检查ANDROID.

编辑:clang 现在也定义了__ANDROID__


La *_*bla 1

如果其他人遇到此问题:

我在另一台计算机上打开工作区(工作区位于 Dropbox 文件夹中),而另一台计算机上仍然存在问题,这只能意味着工作区问题,因此我从工作区中删除了 .metadata 文件夹。

我必须重新添加项目,但这样做之后,现在一切似乎都正常了。