Marking JNI funtions extern
Ranjit Mathew
rmathew@gmail.com
Fri May 21 13:53:00 GMT 2004
Mark Wielaard wrote:
>>but I'm curious. In what way was this confusing the Kaffe build process?
>>> In certain cases they define JNIEXPORT as "extern" and "extern extern"
> isn't valid. I actually think they should not define JNIEXPORT as
> "extern" though, so next up is convincing them to fix their jni.h (or
> adopt the libgcj/GNU Classpath one of course).
Technically, "JNIEXPORT and JNICALL are macros used to
specify the calling and linkage convention of both JNI
functions and native method implementations":
http://java.sun.com/docs/books/jni/html/types.html#46915
So they are not wrong per se, as far as the spec goes,
since "extern" is a valid (though default) linkage for
functions in C.
However, most likely these were introduced to fit in
"__declspec(dllexport)" and "__stdcall" from the
Windoze DLL world - this is reinforced by the JDK's
"$JDK\include\win32\jni_md.h" on Win32 and empty
JNIEXPORT definitions on Linux.
If we really want "extern" in our declarations (why?),
we should modify the JNIEXPORT definition for POSIXy
systems appropriately.
Ranjit.
--
Ranjit Mathew Email: rmathew AT gmail DOT com
Bangalore, INDIA. Web: http://ranjitmathew.tripod.com/
More information about the Java
mailing list