Huh?
If you create a C/C++ file and use jni.h and use the method signatures from javah then either file will work. Depending on various factors, like the file extension, then you might have to specify different command line options to get the file to build.
A C++ file could have templates would add additional problematic concerns.
If you are talking about a C/C++ object files/shared libraries in general then there are conceptual differences (like mangled names) but no actual differences (mangled name is a legitimate C ident.)