【问题标题】:Android JNI print int64_t to fileAndroid JNI 打印 int64_t 到文件
【发布时间】:2016-01-10 14:16:23
【问题描述】:

我正在尝试使用 JNI 代码将 Android 传感器时间戳打印到文件中。

时间戳为defined asint64_t。

打印时间戳的行是:

fout<<timestamp<<std::endl;

其中 fout 是在输出模式下打开的文件流。

当我尝试编译时,出现以下错误结果:

'operator}' 和 'int64_t {aka long long int}')XXX.cpp /YYY/jni 行 ZZZ C /C++ 问题

我想我会使用标准 C++ 制作一个 MWE:

#include <iostream>
#include <cstdint>

int main(){
  int64_t a;
  std::cin>>a;
  std::cout<<a<<std::endl;
}

但这编译没有问题,这让我觉得问题出在 Eclipse 编译代码的方式上。

我在 Eclipse 3.8.1 中。我的默认编译器是 GCC 4.9.2。

【问题讨论】:

  • 编译器知道a=42。尝试在那里存储时间戳。
  • 或者尝试把这个整数存在那里
  • @18446744073709551615:我已经修改了代码,使其接受用户输入,从而阻止编译器对常量进行优化。

标签: android c++ eclipse android-ndk int64


【解决方案1】:

我通过进入jni/Application.mk 并使用这一行解决了这个问题:

LOCAL_CPPFLAGS += -std=gnu++11

代替这一行:

LOCAL_CPPFLAGS+=-std=c++11.

有人猜测是由于long long int在stlport中的映射不同造成的。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2012-11-01
    • 2023-02-24
    • 1970-01-01
    • 2017-08-05
    • 2012-02-24
    相关资源
    最近更新 更多