Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <20050511154108.62144.qmail@web54603.mail.yahoo.com> Date: Wed, 11 May 2005 08:41:07 -0700 (PDT) From: Venkatesh Gopal Subject: Re:JNI and cygwin To: cygwin AT cygwin DOT com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii I need terminal and ncurses support and I have a JNI layer that interacts with "curses" functions.The JNI wrapper needs to be built into a shared library. I have problems using the cygwin libraries with Java VM. I have a smaller example that can reproduce the issue... The shared library when compiled with the -mno-cygwin option works without any issues, however, when I remove this option, the compilation goes fine, but when I try and run the java program the VM hangs. This issue has been reported earlier. Has this problem been fixed? I need to use the "cygwin" libraries for getting "curses" support. Command line used... gcc -mno-cygwin -Wl,--add-stdcall-alias -DCYGWIN_MODE -shared -o myfunction.dll -Ic:/j2sdk1.4.2_06/include -Ic:/j2sdk1.4.2_06/include/win32 myfunction.c Venkatesh. /**** HEADER FILE tryloading.h ****/ /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class tryloading */ #ifndef _Included_tryloading #define _Included_tryloading #ifdef __cplusplus extern "C" { #endif /* * Class: tryloading * Method: myfunction * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_tryloading_myfunction (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif /***** C CODE ******/ #include "tryloading.h" #include #include int __stdcall _cygwin_dll_entry(void* h,int reason,void *foo) { return 1; } JNIEXPORT jint JNICALL Java_tryloading_myfunction (JNIEnv *myenv, jobject obj, jstring arg) { const char *argutf = (*myenv)->GetStringUTFChars(myenv, arg, JNI_FALSE); /* Call into external dylib function */ jint rc = shared_function(argutf); /* Release created UTF8 string. */ (*myenv)->ReleaseStringUTFChars(myenv, arg, argutf); shared_function("hello world"); return rc; } int shared_function(const char *arg) { printf("shared_function called with %s\n", arg); return 42; } /***** JAVA CODE *****/ public class tryloading { static { System.out.println("before loading"); try { System.loadLibrary("myfunction"); } catch(Exception e) { e.printStackTrace(); } } public tryloading() { System.out.println("instance created"); } native int myfunction(String arg); public static void main(String args[]) { System.out.println("in main"); tryloading tl = new tryloading(); int result = tl.myfunction("hello world"); System.out.println("Finished wrapper " + result); } } __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/