【问题标题】:Type 'byte' could not be resolved无法解析类型“字节”
【发布时间】:2014-04-26 23:09:29
【问题描述】:

我刚刚将 NDK 安装到 Eclipse 上,但是遇到了一些问题..

代码如下:

#include <jni.h>
#include <stdlib.h>
#include <stdio.h>

void deleteFile(const char *fileName) {
    remove(fileName);
}

void writeFile(const char *fileName, byte array) {

}

但是出了点问题..我收到了这个错误:

jni/[projectName].cpp:9:38: error: 'byte' has not been declared

字节无法解析!这是一个大问题,因为我绝对需要那种类型。我必须用它来将数据写入文件!

我学习了很多教程,我也尝试导入我所有的 MinGW 库,但没有成功。

【问题讨论】:

    标签: android c++ eclipse android-ndk


    【解决方案1】:

    byte 不是标准的 C 或 C++ 类型...它可能是非标准头文件中的 typedef。你在哪里见过这种类型的代码?您可能想使用const unsigned char * 吗?

    我知道 Visual Studio 定义了 BYTE 类型:

    typedef unsigned char BYTE;   // 8-bit unsigned entity.
    typedef BYTE *        PBYTE;  // Pointer to BYTE.
    

    但这不是标准的。而且它是“BYTE”,而不是“字节”。

    【讨论】:

    • 他来自 Java 世界,byte 是标准的 8 位有符号整数。
    【解决方案2】:

    'byte' 在标准 C 或 C++ 中不存在,如果您的所有代码都依赖于 ,请改用 'jbyte',它在此标头中定义,并映射到 8 位无符号整数类型。

    或者,您可以使用 typedef 定义“字节”,如下所示:

    typedef unsigned char byte;
    

    并确保您的所有来源都使用/解析它(例如,将其放在共享标头中)。

    更正确的做法是:

    #include <inttypes.h>
    
    typedef uint8_t byte;
    

    它在所有受支持的 Android 平台上都是等效的,但需要额外的包含。

    (从技术上讲,'char' 在一些非常奇怪的平台上可能超过 8 位,但它们都不会成为 Android 的目标)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 2019-04-16
      • 1970-01-01
      • 2015-10-22
      • 2013-12-14
      • 1970-01-01
      • 2017-07-19
      相关资源
      最近更新 更多