I'm trying to use Cygwin to run a Java application that uses JNI. I'm starting with the examples from:
http://www.nanotech.wisc.edu/~khan/software/gnu-win32/index.html in particular the "c" example. The first question is about the entry point in the DLL. I've seen references to the fact that defining an alternate entry point for non Cygwin apps would no longer be necessary after the beta. Is that indeed the case? If so my read is that I can get rid of the -e,__cygwin_noncygwin_dll_entry@12 flag dllwrap.exe arguments. Is that true? The second question is probably due to something basic that I'm missing. I can compile the example fine, both the native code to a DLL and the java code to class files via javac, from a Cygwin bash prompt, but if I try to run it it seems to hang when the java application tries to invoke the native method. The same thing works fine from a Windows cmd.exe prompt. Is this something I have to live with or am I doing something incorrectly when trying to run the Java app from a Cygwin prompt? The problem doesn't seem to manifest itself when running a standalone Java app. Only when Java tries to call a native method via JNI does the problem occur, and then only when I try to run it from a Cygwin shell. Works fine, apparently, under the Win2k command prompt. The last question is only pertinent if I can solve the problem described above. How to generate dll's that depend on other generated dll's. I have a base library and another library that depends on functions in the base library. Under Unix the sequence I use to generate these libraries is, for example: gcc -shared foo.o -o libfoo.so gcc -shared bar.o -o libbar.so -lfoo But I'm stumped on how to proceed with this under Cygwin when I want DLL's that are going to be called from a Java app via JNI. If I create foo.dll then gcc can't find it via "-lfoo". If I create foo.dll, via dllwrap.exe, and copy it to libfoo.so then the linker core dumps. The only way I've been successful is to create libfoo.so in the standard Unix way, shown above, ie., non-dll version, and then creating foo.dll via dllwrap separately and then creating bar.dll by referencing libfoo.so. Do I have to combine foo.o and bar.o into a single DLL? This is probably doable in my project, although it creates a scary scenario for maintenance and recompling when a change in the native source is made. Thanks for any help! Gary -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/