Я пытаюсь использовать код JNI для печати временных меток датчика Android в файл.
Временные метки определяется как int64_t
,
Строка для печати метки времени:
fout<<timestamp<<std::endl;
Где fout — поток открытых файлов в режиме вывода.
Когда я пытаюсь скомпилировать, возникает следующая ошибка:
неоднозначная перегрузка для оператора<<‘(типы операндов’ std :: ofstream {aka std :: basic_ofstream>} ‘и’ int64_t {aka long long int} ‘)
Я думал, что сделаю MWE для этого, используя стандартный C ++:
#include <iostream>
#include <cstdint>
int main(){
int64_t a;
std::cin>>a;
std::cout<<a<<std::endl;
}
Но это компилируется без проблем, что заставляет меня думать, что проблема в том, как Eclipse компилирует код.
Я внутри Затмения 3.8.1. Мой компилятор по умолчанию — GCC 4.9.2.
Я решил эту проблему, зайдя в jni/Application.mk
и используя эту строку:
LOCAL_CPPFLAGS += -std=gnu++11
вместо этой строки:
LOCAL_CPPFLAGS+=-std=c++11.
Некоторые предполагают, что проблема связана с различными отображениями long long int
в стлпорте.
Других решений пока нет …