0

I am trying to use JNI code to print Android sensor timestamps to a file.

The timestamps are defined as int64_t.

The line to print the timestamp is:

fout<<timestamp<<std::endl;

Where fout is an open file stream in output mode.

When I try to compile, the following error results:

ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream >}' and 'int64_t {aka long long int}') XXX.cpp /YYY/jni line ZZZ C/C++ Problem

I thought I would make an MWE for this using standard C++:

#include <iostream>
#include <cstdint>

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

But this compiles without an issue, which makes me think the problem is somehow in the way Eclipse compiles the code.

I am inside Eclipse 3.8.1. My default compiler is GCC 4.9.2.

Richard
  • 56,349
  • 34
  • 180
  • 251

1 Answers1

0

I solved this problem by going into jni/Application.mk and using this line:

LOCAL_CPPFLAGS += -std=gnu++11

instead of this line:

LOCAL_CPPFLAGS+=-std=c++11.

Some have conjectured that the problem is due to different mappings of long long int in stlport.

Richard
  • 56,349
  • 34
  • 180
  • 251