Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-Id: <371E2123.6CD504AF@tempest.engr.ucdavis.edu> Date: Wed, 21 Apr 1999 12:04:03 -0700 From: John McNally X-Mailer: Mozilla 4.5 [en] (Win95; I) X-Accept-Language: en Mime-Version: 1.0 To: Mumit Khan Cc: "gnu-win32 AT cygnus DOT com" Subject: jni,egcs1.1.2 compiling problem Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit I am trying to call a native method within Java using the jni examples from Mumit Khan's website. I'm not very knowledgable about C, so I'm hoping I'm making a rather easy to see error. But possibly it is something more subtle and my reporting of the error may help others. I should also note the native method is in fortran and I expected that it may not work, however, I believe the problems I am having are unrelated to this (they will probably show up when linking while running the java class). And nothing in what follows is related to the fortran code. When compiling I attempt to add the header files to the dllinit.c file which is part of Mumit Khan's examples on building a DLL. Using win95, egcs1.1.2-mingw32, jdk1.1.5 I get the following error. A:\>gcc -c -DBUILDING_DLL=1 -I. -Ic:/Languages/Java/jdk1.1.5/include -Ic:/Langua ges/Java/jdk1.1.5/include/win32 -o dllinit.o dllinit.c In file included from c:\Languages\Java\jdk1.1.5\include\typedefs.h:26, from c:\Languages\Java\jdk1.1.5\include\oobj.h:33, from c:\Languages\Java\jdk1.1.5\include\native.h:34, from GyroIn.h:2, from dllinit.c:35: c:\Languages\Java\jdk1.1.5\include\win32\typedefs_md.h:67: `#' operator is not f ollowed by a macro argument name c:\Languages\Java\jdk1.1.5\include\win32\typedefs_md.h:67: `#' operator is not f ollowed by a macro argument name Using Nt, egcs1.1.2-mingw32, and jdk1.1.8 I get a long list of different errors which I will place at the end of this message in case they are more help, but first, here are the files dllinit.c ******************************************************************** #include // only changes to file #include "GyroIn.h" #define WIN32_LEAN_AND_MEAN #include #undef WIN32_LEAN_AND_MEAN #include //I also tried placing the includes here. BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved /* Not used. */ ); /* *---------------------------------------------------------------------- * * DllMain -- * * This routine is called by the Mingw32, Cygwin32 or VC++ C run * time library init code, or the Borland DllEntryPoint routine. It * is responsible for initializing various dynamically loaded * libraries. * * Results: * TRUE on sucess, FALSE on failure. * * Side effects: * *---------------------------------------------------------------------- */ BOOL APIENTRY DllMain ( HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } return TRUE; } GyroIn.h ****************************************************** /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class GyroIn */ #ifndef _Included_GyroIn #define _Included_GyroIn #pragma pack(4) typedef struct ClassGyroIn { char PAD; /* ANSI C requires structures to have a least one member */ } ClassGyroIn; HandleTo(GyroIn); #pragma pack() #ifdef __cplusplus extern "C" { #endif extern void GyroIn_mainprog(struct HGyroIn *,long,long,long,long,float,long,long,long,HArrayOfInt *,HArrayOfFloat *,HArrayOfFloat *,HArrayOfFloat *,HArrayOfFloat *,float,float,float,float,long,long,long,long,long,long,float,float,float,HArrayOfInt *,HArrayOfFloat *,long,float,float,long,float,float,long,float,float); #ifdef __cplusplus } #endif #endif GyroIn.java ******************************************************************** class GyroIn { static { System.loadLibrary("f77dll"); } public native void mainprog(int ipmore,int iplot,int icavnm,int icavmx,float fghz,int im,int il,int is,int[] iin,float[] aqcav,float[] llamcv,float[] llamdf,float[] offset,float drc,float rcavg,float alpha0, float ribamp,int izstep,int itmax,int ircmax,int ipsimx,int iphimx,int ipzmax,float eomin,float tz,float dz,int[] ineo,float[] base,int iwmax,float dwmin,float dwmax,int idsmax,float b0kgmn,float b0kgmx,int ivbkvmx,float vbmin,float vbmax); public static void main(String[] args) { int ipmore=1; ... initialize all variables // removed for some brevity ... float vbmax=80.0f; GyroIn g = new GyroIn(); g.mainprog(ipmore,iplot,icavnm,icavmx,fghz,im,il,is, iin,aqcav,llamcv,llamdf,offset,drc,rcavg,alpha0, ribamp,izstep,itmax,ircmax,ipsimx,iphimx,ipzmax, eomin,tz,dz,ineo,base,iwmax,dwmin,dwmax,idsmax, b0kgmn,b0kgmx,ivbkvmx,vbmin,vbmax); } } Finally, the output while compiling on Nt, with egcs1.1.2-mingw32 and jdk1.1.8 D:\USERS\MCNALLY\programs\java>gcc -c -DBUILDING_DLL=1 -I. -Id:/language/java/jd k1.1.8/include -Id:/language/java/jdk1.1.8/include/win32 -o dllinit.o dllinit.c In file included from d:\language\java\jdk1.1.8\include\typedefs.h:18, from d:\language\java\jdk1.1.8\include\oobj.h:25, from d:\language\java\jdk1.1.8\include\native.h:26, from GyroIn.h:2, from dllinit.c:39: d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:29: parse error before `in t64_t' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:29: warning: data definiti on has no type or storage class d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:30: parse error before `ui nt64_t' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:30: warning: data definiti on has no type or storage class d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:65: parse error before `fl oat2ll' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:65: warning: data definiti on has no type or storage class d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:66: parse error before `do uble2ll' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:66: warning: data definiti on has no type or storage class d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:84: parse error before `a' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:85: parse error before `ll _shl' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:85: parse error before `a' d:\language\java\jdk1.1.8\include\win32\typedefs_md.h:85: warning: data definiti on has no type or storage class In file included from d:\language\java\jdk1.1.8\include\oobj.h:25, from d:\language\java\jdk1.1.8\include\native.h:26, from GyroIn.h:2, from dllinit.c:39: d:\language\java\jdk1.1.8\include\typedefs.h:31: parse error before `int64_t' d:\language\java\jdk1.1.8\include\typedefs.h:31: warning: no semicolon at end of struct or union d:\language\java\jdk1.1.8\include\typedefs.h:33: parse error before `}' d:\language\java\jdk1.1.8\include\typedefs.h:33: warning: data definition has no type or storage class In file included from d:\language\java\jdk1.1.8\include\native.h:26, from GyroIn.h:2, from dllinit.c:39: d:\language\java\jdk1.1.8\include\oobj.h:55: parse error before `number' d:\language\java\jdk1.1.8\include\oobj.h:160: parse error before `int64_t' d:\language\java\jdk1.1.8\include\oobj.h:160: warning: no semicolon at end of st ruct or union d:\language\java\jdk1.1.8\include\oobj.h:161: warning: data definition has no ty pe or storage class d:\language\java\jdk1.1.8\include\oobj.h:162: parse error before `ClassArrayOfLo ng' d:\language\java\jdk1.1.8\include\oobj.h:162: warning: data definition has no ty pe or storage class d:\language\java\jdk1.1.8\include\oobj.h:163: parse error before `ClassArrayOfLo ng' d:\language\java\jdk1.1.8\include\oobj.h:163: warning: no semicolon at end of st ruct or union d:\language\java\jdk1.1.8\include\oobj.h:163: parse error before `}' d:\language\java\jdk1.1.8\include\oobj.h:163: warning: data definition has no ty pe or storage class In file included from d:\language\java\jdk1.1.8\include\native.h:27, from GyroIn.h:2, from dllinit.c:39: d:\language\java\jdk1.1.8\include\interpreter.h:260: parse error before `TotalOb jectMemory' d:\language\java\jdk1.1.8\include\interpreter.h:260: warning: data definition ha s no type or storage class d:\language\java\jdk1.1.8\include\interpreter.h:261: parse error before `FreeObj ectMemory' d:\language\java\jdk1.1.8\include\interpreter.h:261: warning: data definition ha s no type or storage class d:\language\java\jdk1.1.8\include\interpreter.h:262: parse error before `TotalHa ndleMemory' d:\language\java\jdk1.1.8\include\interpreter.h:262: warning: data definition ha s no type or storage class d:\language\java\jdk1.1.8\include\interpreter.h:263: parse error before `FreeHan dleMemory' d:\language\java\jdk1.1.8\include\interpreter.h:263: warning: data definition ha s no type or storage class -- John McNally Graduate Student, UCLA Graduate Student Researcher, UC-Davis e-mail: mcnally AT tempest DOT engr DOT ucdavis DOT edu -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com