win32: Why exports of JNI_* symbols from _exe_ files

Danny Smith
Tue Aug 5 10:34:00 GMT 2003

 --- Ranjit Mathew <> wrote: > Danny Smith wrote:
> > Removing  __declspec(dllimport) from the declaration of foo in main.c fixes.
> > Also, even if foo() does live in dll and has the __imp__ prefix, the 
> > dllimport attribute is not necessary and the fixup will occur in the dll.
> Yes, but isn't there a performance penalty to this?

One thunk from foo to __imp__foo in the dll.  How often
are these functions called? If they were calls to some 
math function in the inner loop of extensive matrix math, I
might be concerned.  There is also a penalty for using the 
attribute: the address of *_imp__foo is not a constant, so can't
be used in file scope initializers
> (or if the above URL is mauled)
> > I'm wondering if the JNIEXP attribute should also be removed from the definitions
> > in  If you want to specify what goes into a .dll, can always use a .DEF file
> > when building the dll (or .exe for that matter).
> Yeah, but that's cumbersome... Or maybe not - since this
> DEF file has to be created only once - it's not like
> new JNI methods are being added every now and then.

That's what I thought.  Only three methods are actually marked as dllexport
in code now. 


> ~shrug~
> Ranjit.
> - Yahoo! Personals
-  New people, new possibilities! Try Yahoo! Personals, FREE for a limited period!

More information about the Java mailing list