it fixes the issue See the reference You're trying to use the overload std::equal which takes 4 iterators, which only exists in C++14. It doesn't exist in older versions, hence the confusing error because of using the "3 iterators and a predicate" overload - std::equal tries to use the &readBuffer2[numOfBytesReadFile2] as a predicate.
it helps some times To call a function using a pointer, you have to declare a function pointer. In general, a function pointer (static member, global or static function) declaration looks like this:
typedef krb5_int32 (*context_fn)(krb5_context*); // pointer to function type
contextfn krb5_init_context; // declare it
krb5_init_context = (context_fn)GetProcAddress(...); // get the address
krb5_init_context(&context); // now function can be called