Mail Archives: cygwin/1999/05/13/20:31:34
--------------CD77B0DE456EEE8D6A48DD48
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi,
I'm trying to create a dll using egcs for use with Java but
find that functions returning double or float values don't work
properly. That is in the conversion between C double to Java double
something goes wrong. I was wondering if anyone else has had this
problem or it's peculiar to my setup.
Sample code, setup and compile options follow.
thanks in advance,
Kaveh.
my setup is as follow :
Win98 on a PII 300 MHz IBM ThinkPad
Cygnus 20.1
chaman:~% gcc -v
Reading specs from E:\Unix\Cygnus20.1\cygwin-b20\H-i586-cygwin32\lib\gcc-lib\i586-cygwin32/egcs-2.91.60/specs
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
chaman:~% java -version
java version "1.2"
Classic VM (build JDK-1.2-V, native threads)
I've also applied the necessary patch to jni_md.h
I've attatched the sample program which illustrates this. The
Java class has three static native methods returnInt, returnFloat and
returnDouble. The native C counterparts simply print the input
parameter and return it. Running the code gives me :
chaman:~/java/jni% java Bug 10 3.14 3.141592
C returning input parameter 10
Java Calling native returnInt ( 10 ) = 10
C returning input parameter 3.14
Java Calling native returnFloat ( 3.14 ) = NaN
C returning input parameter 3.14159
Java Calling native returnDouble ( 3.141592 ) = NaN
chaman:~/java/jni%
Bug.java contains the java code, BugImp.c contains the C
sources. I compile the code as follows :
chaman:~/java/jni% make
javac Bug.java
javah Bug
gcc -c -DBUILDING_DLL=1 -D_DLL=1 -I. -Ie:/Java/jdk1.2/include -Ie:/Java/jdk1.2/include/win32 -g -Wall -O2 -o BugImp.o BugImp.c
dllwrap --output-def bug.def --add-stdcall-alias --driver-name gcc -o bug.dll BugImp.o -Wl,-e,__cygwin_noncygwin_dll_entry AT 12 -s
Warning: no export definition file provided
dllwrap will create one, but may not be what you want
chaman:~/java/jni%
--------------CD77B0DE456EEE8D6A48DD48
Content-Type: application/x-unknown-content-type-cfile;
name="BugImp.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="BugImp.c"
I2luY2x1ZGUgPGpuaS5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQoNCkpOSUVYUE9SVCBqZG91
YmxlIEpOSUNBTEwgSmF2YV9CdWdfcmV0dXJuRG91YmxlDQogIChKTklFbnYgKmVudiwgamNs
YXNzIGNsYXp6LCBqZG91YmxlIGQpDQp7DQogIHByaW50ZiAoIlx0QyByZXR1cm5pbmcgaW5w
dXQgcGFyYW1ldGVyICVnXG4iLCBkICkgOw0KICByZXR1cm4gZCA7DQp9DQoNCkpOSUVYUE9S
VCBqZmxvYXQgSk5JQ0FMTCBKYXZhX0J1Z19yZXR1cm5GbG9hdA0KICAoSk5JRW52ICplbnYs
IGpjbGFzcyBjbGF6eiwgamZsb2F0IGYpDQp7DQogIHByaW50ZiAoIlx0QyByZXR1cm5pbmcg
aW5wdXQgcGFyYW1ldGVyICVnXG4iLCBmICkgOw0KICByZXR1cm4gZiA7DQp9DQoNCg0KSk5J
RVhQT1JUIGppbnQgSk5JQ0FMTCBKYXZhX0J1Z19yZXR1cm5JbnQNCiAgKEpOSUVudiAqZW52
LCBqY2xhc3MgY2xhenosIGppbnQgaSkNCnsNCiAgcHJpbnRmICgiXHRDIHJldHVybmluZyBp
bnB1dCBwYXJhbWV0ZXIgJWRcbiIsIChpbnQpIGkgKSA7DQogIHJldHVybiBpIDsNCn0NCg0K
DQppbnQgbWFpbiAoIGludCBhcmdjICwgY2hhciAqIGFyZ3YgW10gKQ0Kew0KICBkb3VibGUg
ZCA9IDMuMTMxNCA7DQogIGpkb3VibGUgamQgOw0KICBqZCA9IChqZG91YmxlKSBkIDsNCg0K
ICBwcmludGYgKCJcdEMgQ2FsbGluZyBKYXZhIG5ldGl2ZSBtZXRob2RzIFxuIikgOw0KICBq
ZCA9IEphdmFfQnVnX3JldHVybkRvdWJsZSAoIE5VTEwsIE5VTEwsIDMuMTQxNSApIDsNCiAg
ZCA9IChkb3VibGUpIGpkIDsNCiAgamQgPSAoamRvdWJsZSkgZCA7DQogIHByaW50ZiAoInJl
dHVybiB2YWwgPSAlZ1xuIiwgKGRvdWJsZSkgamQgKSA7DQoNCiAgcmV0dXJuIDAgOw0KfQ0K
--------------CD77B0DE456EEE8D6A48DD48
Content-Type: application/x-unknown-content-type-JBuilder.JavaFile;
name="Bug.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="Bug.java"
aW1wb3J0IGphdmEubGFuZy4qIDsNCmltcG9ydCBqYXZhLmlvLiogOw0KDQpwdWJsaWMgY2xh
c3MgQnVnDQp7DQoNCiAgc3RhdGljDQogICAgew0KICAgICAgU3lzdGVtLmxvYWRMaWJyYXJ5
ICgiYnVnIikgOw0KICAgIH0NCg0KICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgcmV0dXJu
SW50ICggaW50IGkgKTsNCiAgcHVibGljIHN0YXRpYyBuYXRpdmUgZmxvYXQgcmV0dXJuRmxv
YXQgKCBmbG9hdCBmICk7DQogIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGRvdWJsZSByZXR1cm5E
b3VibGUgKCBkb3VibGUgZCApOw0KDQogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluICggU3Ry
aW5nIFtdIGFyZ3YgKQ0KICAgIHsNCiAgICAgIC8vIGFyZyBjaGVjaw0KICAgICAgaWYgKCBh
cmd2Lmxlbmd0aCA8IDMgKQ0KCXsNCglTeXN0ZW0uZXJyLnByaW50bG4gKCJVc2FnZTogamF2
YSBCdWcgaW50VmFsIEZsb2F0VmFsIERvdWJsZVZhbFxuIik7DQoJU3lzdGVtLmV4aXQgKDEp
IDsNCgl9DQoNCiAgICAgIC8vIHJlYWQgYXJncyBmcm9tIGNvbW1hbmQgbGluZQ0KICAgICAg
aW50IGkgPSBJbnRlZ2VyLnBhcnNlSW50IChhcmd2WzBdKSA7DQogICAgICBmbG9hdCBmID0g
IEZsb2F0LnBhcnNlRmxvYXQgKGFyZ3ZbMV0pIDsNCiAgICAgIGRvdWJsZSBkID0gRG91Ymxl
LnBhcnNlRG91YmxlIChhcmd2WzJdKSA7DQoNCiAgICAgIC8vIGNhbGwgZnVuY3Rpb25zIGFu
ZCBkaXNwbGF5IHJldHVybiB2YWxzDQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJKYXZh
IENhbGxpbmcgbmF0aXZlIHJldHVybkludCAoICIgDQoJCQkgICsgaSArICIgKSA9ICIgKyBy
ZXR1cm5JbnQgKGkpICkgOw0KDQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJKYXZhIENh
bGxpbmcgbmF0aXZlIHJldHVybkZsb2F0ICggIiANCgkJCSAgKyBmICsgIiApID0gIiArIHJl
dHVybkZsb2F0IChmKSApIDsNCg0KICAgICAgU3lzdGVtLm91dC5wcmludGxuICgiSmF2YSBD
YWxsaW5nIG5hdGl2ZSByZXR1cm5Eb3VibGUgKCAiIA0KCQkJICArIGQgKyAiICkgPSAiICsg
cmV0dXJuRG91YmxlIChkKSApIDsNCiAgICB9DQp9DQo=
--------------CD77B0DE456EEE8D6A48DD48
Content-Type: text/plain; charset=us-ascii
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
--------------CD77B0DE456EEE8D6A48DD48--
- Raw text -