Android JNI打印int64_t到文件

时间:2015-10-13 00:37:06

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

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

时间戳为defined as int64_t

打印时间戳的行是:

fout<<timestamp<<std::endl;

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

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

  

'operator&lt;&lt;'的模糊重载(操作数类型是'std :: ofstream {aka std :: basic_ofstream&gt;}'和'int64_t {aka long long int}')XXX.cpp / YYY / jni line 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。

1 个答案:

答案 0 :(得分:0)

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

LOCAL_CPPFLAGS += -std=gnu++11

而不是这一行:

LOCAL_CPPFLAGS+=-std=c++11.

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