Linking problem on windows under cygwin
Jeff Morgan
kuzman@gmail.com
Mon Mar 7 17:21:00 GMT 2005
To summarize, here is what I know so far. I am compiling libgtk-java on
a windows platform using gcc 3.3.3 under a cygwin environment. I am
specifying the following parameters to my configure / autogen scripts:
env CC="gcc -mms-bitfields -mno-cygwin" ./autogen.sh
--host=i386-pc-mingw32 --build=i386-pc-ming32
I am linking with the following libs:
-Lc:/GTK/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2
.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -
lintl -liconv
and am specifying '-no-undefined' during the linking process.
The library compiles without any problems and builds a dll. This
dll contains JNI code that provides the language binding. When I
try to run a small example program that uses this library I get the
following error from the Java code:
java.lang.UnsatisfiedLinkError: gtk_init
gtk_init is the first method called in the application. The problem is that
the java code is calling the native method gtk_init but the real JNI method
is Java_org_gnu_gtk_Gtk_gtk_1init and I have verified that this method does
exist in the dll. I have also changed the application so it calls
another method
first but it makes no difference - I still get this error with another
method. On
other platforms (I test on Linux and Solaris) this name resolution/translation
takes place and I do not get this error.
I haven't opened a bugzilla report since I am not sure if the problem is with
gcc, my Makefile, or Java. Any help you might be able to provide would be
greatly appreciated.
Thanks
-Jeff
More information about the Gcc-help
mailing list