C++ Android NDK错误:无法重命名函数

C++ Android NDK错误:无法重命名函数,c++,android-ndk,C++,Android Ndk,我已经设法使我的Android项目与Visual Studio项目一起工作。我唯一的问题是当我编译C++项目时,VSC++编译器给了我这个错误: android-ndk-r6b\platforms\android-9\arch-x86\usr\include\sys\cdefs.h(252):致命错误C1189:#错误:“无法重命名函数” 如果以前有人遇到过这个问题,任何输入都会很好 当我将包含include的.h包含到这些文件中时,会发生错误 jni.h android\log.h 编辑:

我已经设法使我的Android项目与Visual Studio项目一起工作。我唯一的问题是当我编译C++项目时,VSC++编译器给了我这个错误:

android-ndk-r6b\platforms\android-9\arch-x86\usr\include\sys\cdefs.h(252):致命错误C1189:#错误:“无法重命名函数”

如果以前有人遇到过这个问题,任何输入都会很好

当我将包含include的.h包含到这些文件中时,会发生错误

  • jni.h
  • android\log.h
编辑:

我已经看了252行附近的cdefs.h:

245 | #if !defined(_STANDALONE) && !defined(_KERNEL)
246 | #ifdef __GNUC__
247 | #define   __RENAME(x) ___RENAME(x)
248 | #else
249 | #ifdef __lint__
250 | #define   __RENAME(x) __symbolrename(x)
251 | #else
252 | #error "No function renaming possible"
253 | #endif /* __lint__ */
254 | #endif /* __GNUC__ */
255 | #else /* _STANDALONE || _KERNEL */
256 | #define   __RENAME(x) no renaming in kernel or standalone environment
257 | #endif

但老实说,我不知道什么不更名。。。意思是。

源代码中有
#error
pragma。找到此pragma并探索其附近区域,以检查是否有任何注释和/或
#ifdef
,它们可能会提示您问题所在。

源代码中有
#error
pragma。找到这个pragma并探索它的附近区域,以检查是否有任何注释和/或
#ifdef
,这些注释和/或
ifdef
可能会提示问题所在。

似乎
cdefs.h
from
$(NDKROOT)/…/include
与Visual Studio中的“默认值”
cdefs.h
存在某种冲突。尝试直接在includes中寻址android文件夹,并将源文件中的
#include
更改为
#include


关于
jni.h
我没有进一步的线索…

似乎
cdefs.h
来自
$(NDKROOT)/…/包括
在某种程度上与Visual Studio中的“默认”
cdefs.h
冲突。尝试直接在includes中寻址android文件夹,并将源文件中的
#include
更改为
#include


关于
jni.h
我没有进一步的线索…

我想做同样的事情,使用Visual Studio编译我的Android代码。尽管Studio没有平板电脑模拟器,但我至少可以在Studio下运行我的一些逻辑,这些部分不涉及任何特定于Android的内容(例如UI绘图)。为什么要为这样一个有限的开发环境而烦恼呢?嗯,简单的是因为Studio有一个非常好的C++编辑器,它编译得更快,Android工作室/ GoDLE。我有很多非UI逻辑,需要正确处理。因此,我将我的工作划分为一个前期步骤,我认为这可以通过Studio更快地完成

对我来说,我复制了jni.h(来自AndroidNDK的x86文件夹)。我做了一些调整

#define __NDK_FPABI__
//#include <sys/cdefs.h>
...
#define JNIEXPORT  //gdh: __attribute__ ((visibility ("default")))
\define\u NDK\u FPABI__
//#包括
...
#定义JNIEXPORT//gdh:_属性(可见性(“默认”))

这让工作室很高兴

我也想做同样的事情,用visualstudio编译我的Android代码。尽管Studio没有平板电脑模拟器,但我至少可以在Studio下运行我的一些逻辑,这些部分不涉及任何特定于Android的内容(例如UI绘图)。为什么要为这样一个有限的开发环境而烦恼呢?嗯,简单的是因为Studio有一个非常好的C++编辑器,它编译得更快,Android工作室/ GoDLE。我有很多非UI逻辑,需要正确处理。因此,我将我的工作划分为一个前期步骤,我认为这可以通过Studio更快地完成

对我来说,我复制了jni.h(来自AndroidNDK的x86文件夹)。我做了一些调整

#define __NDK_FPABI__
//#include <sys/cdefs.h>
...
#define JNIEXPORT  //gdh: __attribute__ ((visibility ("default")))
\define\u NDK\u FPABI__
//#包括
...
#定义JNIEXPORT//gdh:_属性(可见性(“默认”))

这让工作室很高兴

你的意思是我应该在我的.h中加入一个#pragma调用吗?不,不,找到编译器所抱怨的
#错误
,你可能会看到解释问题的注释。更具预见性的是-查看
android-ndk-r6b\platforms\android-9\arch-x86\usr\include\sys\cdefs.h的第252行
你的意思是我应该在我的.h中加入一个#pragma调用吗?不,不,不,找到编译器正在咆哮的
错误
,你可能会看到解释问题的注释。更具前瞻性-查看android-ndk-r6b\platforms\android-9\arch-x86\usr\include\sys\cdefs.h的第252行您找到了解决问题的方法吗?我现在也有同样的想法。不幸的是,我从未找到解决方案,但项目采取了不同的方向,所以我们不再需要NDK了。但是从我当时可以看出,错误来自NDK库和一些C++库之间的兼容性问题(可能是OOC C++代码,不支持或是……)你找到了解决问题的方法吗?我现在也有同样的想法。不幸的是,我从未找到解决方案,但项目采取了不同的方向,所以我们不再需要NDK了。但是从我当时可以看出,错误来自NDK库和一些C++库之间的相容性问题(可能是不支持的OOC++代码或其他东西…)