win32: Why exports of JNI_* symbols from _exe_ files

Jeff Sturm jsturm@one-point.com
Tue Aug 5 04:03:00 GMT 2003


On Tue, 5 Aug 2003, [iso-8859-1] Danny Smith wrote:
> The libarary:
> /* foo.c */
> void __declspec(dllexport) foo()
> { }
>
> The client:
> /* main.c */
> extern  __declspec(dllimport) void foo();
> int main()
> {
>   foo();
>   return 0;
> }
>
> gcc -c foo.c
> gcc main.c foo.o
>
> D:\TEMP/ccWgaaaa.o(.text+0x1f):main.c: undefined reference to `_imp__foo'

Really?  This symbol isn't satisfied by a corresponding dllexport within
the same .exe?  (If so, I understand even less about declspec than I
previously thought.)

> 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).

Good point.  I presume anyone who needs to make a DLL out of libgcj.a
knows what this means.

Care to submit a patch?

Jeff



More information about the Java mailing list