Android JNI 打印 int64_t 到文件
Posted
技术标签:
【中文标题】Android JNI 打印 int64_t 到文件【英文标题】:Android JNI print int64_t to file 【发布时间】: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:我已经修改了代码,使其接受用户输入,从而阻止编译器对常量进行优化。 【参考方案1】:我通过进入jni/Application.mk
并使用这一行解决了这个问题:
LOCAL_CPPFLAGS += -std=gnu++11
代替这一行:
LOCAL_CPPFLAGS+=-std=c++11.
有人猜测是由于long long int
在stlport中的映射不同造成的。
【讨论】:
以上是关于Android JNI 打印 int64_t 到文件的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在Android NDK上使用__int128_t?
[Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理
如何用 D 语言正确打印 uint64_t (dtrace)