win32: Why exports of JNI_* symbols from _exe_ files

Danny Smith danny_r_smith_2001@yahoo.co.nz
Tue Aug 5 10:34:00 GMT 2003


 --- Ranjit Mathew <rmathew@hotmail.com> 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
> 
>
http://msdn.microsoft.com/library/en-us/vccore98/HTML/_core_using___declspec.28.dllimport.29_.and___declspec.28.dllexport.29.asp
> 
> (or http://tinyurl.com/j0r0 if the above URL is mauled)
> 
> 
> > I'm wondering if the JNIEXP attribute should also be removed from the definitions
> > in jni.cc.  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. 

Danny

> ~shrug~
> 
> Ranjit.
> 


http://personals.yahoo.com.au - Yahoo! Personals
-  New people, new possibilities! Try Yahoo! Personals, FREE for a limited period!



More information about the Java mailing list