loading DLLs created with Cygwin into Sun JDK

Alan Thompson athompson@alphatech.com
Sat Aug 2 03:32:00 GMT 2003


Ok, if you check out this example: http://www.whitecaps.net/jni/expr.jar 
you'll see that there it doesn't use -mno-cygwin. Here is the g++ task from the ant build script:
 <property name="cppCompilerName" value="g++" />
 <echo message="Compiling for Cygwin..." /> 
 <exec executable="${cppCompilerName}" dir="${ctmp}" > 
 <arg line="-D_REENTRANT -D_GNU_SOURCE -D__int64='long long' " /> 
 <arg line="-I${env.JAVA_HOME}/include" /> 
 <arg line="-I${env.JAVA_HOME}/include/win32" /> 
 <arg line="-I${basedir}/src" /> 
 <arg line="-c " /> 
 <arg line=" HelloWorld.c" /> 
 </exec> 
 <echo message="Linking for Cygwin..." /> 
 <exec executable="${cppCompilerName}" dir="${ctmp}" > 
 <arg line=" -Wl,--add-stdcall-alias -shared" /> 
 <arg line="-I${env.JAVA_HOME}/include" /> 
 <arg line="-I${env.JAVA_HOME}/include/win32" /> 
 <arg line="-I${basedir}/src" /> 
 <arg line=" " /> 
 <arg line="-o ${bin}/Native.dll" /> 
 <arg line=" HelloWorld.o" /> 
 </exec> 
.....
 <target name="go" depends="build" >
 <java classname="HelloWorld" classpath="${bin}" fork="true"> 
 <jvmarg line="-Xms64m -Xmx256m" /> 
 <jvmarg line="-Djava.library.path=${bin}" /> 
 </java> 
 <antcall target="clean" /> 
 </target>
Works for me!
===============================================================
> ant
Buildfile: build.xml
.............
ccComp:
 [mkdir] Created dir: C:\work\test\expr\jni\hello\ctmp
 [copy] Copying 2 files to C:\work\test\expr\jni\hello\ctmp
 [echo] Compiler Name: g++
 [echo] Compiler Version:
 [exec] g++ (GCC) 3.2 20020927 (prerelease)
 [exec] Copyright (C) 2002 Free Software Foundation, Inc.
 [exec] This is free software; see the source for copying conditions. There is NO
 [exec] warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 [echo] Compiling for Cygwin...
 [echo] Linking for Cygwin...
go:
 [java] loading library
.........
 [java] answer[ 0 ] = 'Hello World from C!'
 [java] answer[ 1 ] = 'the new C string value'
 [java] answer[ 2 ] = 'initial value from java'
BUILD SUCCESSFUL
Total time: 17 seconds
>===============================================================
At 08:59 PM 8/1/2003 -0600, Marcus G. Daniels wrote:
>Again, "those techniques" specify use of -mno-cygwin, which worked fine for me in my posted example. The crash happens as the DLL is loaded, not when methods are called.
>>Have you actually tried _not_ using -mno-cygwin?
>>Also, using 'javah' or not to generate the headers (and making sure JNIEXPORT and
>JNICALL are in the header and implementation declarations, and using
>and using -Wl,--add-stdcall-alias makes no difference. For this simple test case, you need to have JNIEXPORT/JNICALL and the -Wl,--add-stdcall-alias, or neither to get the test case to work. 

--
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/


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /