我正在尝试使用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。
答案 0 :(得分:0)
我通过进入jni/Application.mk
并使用此行解决了这个问题:
LOCAL_CPPFLAGS += -std=gnu++11
而不是这一行:
LOCAL_CPPFLAGS+=-std=c++11.
有些人猜测问题是由于stlport中long long int
的不同映射造成的。