GIWS (oprogramowanie)

GIWS to generator opakowań , który ma uprościć wywoływanie Javy z C lub C++ poprzez automatyczne generowanie niezbędnego kodu JNI .

GIWS jest udostępniany na licencji CeCILL .

Przykład

Następująca klasa Java wykonuje proste obliczenia.

 
 

  
	 
		
	
	     
		 
		
 pakiet  podstawowy_przyklad  ;  importuj  java.lang.Math  ;  public  class  MyComplexClass  {  public  MyComplexClass  (){  // konstruktor  }  public  long  myVeryComplexCommputation  (  double  a  ,  double  b  ){  return  Math  .  round  (  Matematyka  .  cos  (  a  )  +  Matematyka  .  sin  (  b  )  *  9  );  }  } 

GIWS daje możliwość wywołania go z C++.

 
 
 

  
	 
	 
	 
	 
	  
	  
	0  
	  
	  
	  
	   
	 


  
  

 
  	   
	    
	       
	 0	
 #include  <iostream>  #include  "basic_example.hxx"  #include  <jni.h>  JavaVM  *  create_vm  ()  {  JavaVM  *  jvm  ;  JNIEnv  *  env  ;  JavaVMInitArgs  argumenty  ;  Opcje  JavaVMOption  [  2  ];  argumenty  .  wersja  =  JNI_VERSION_1_4  ;  argumenty  .  nOpcje  =  2  ;  opcje  [  ].  optionString  =  const_cast  <  char  *>  (  "-Djava.class.path=."  );  opcje  [  1  ].  optionString  =  const_cast  <  char  *>  (  "-Xcheck:jni"  );  argumenty  .  opcje  =  opcje  ;  argumenty  .  zignoruj ​​nierozpoznane  =  JNI_FALSE  ;  JNI_CreateJavaVM  (  &  jvm  ,  (  puste  **  )  &  env  ,  &  args  );  zwróć  jvm  ;  }  przy użyciu  przestrzeni nazw  basic_example  ;  używając  przestrzeni nazw  std  ;  int  main  (){  JavaVM  *  jvm  =  create_vm  ();  MyComplexClass  *  testOfMyClass  =  new  MyComplexClass  (  jvm  );  cout  <<  "Moje obliczenia: "  <<  testOfMyClass  ->  myVeryComplexComputation  (  1.2  ,  80  )  <<  endl  ;  powrót  ;  } 

Aby wygenerować powiązanie, GIWS używa deklaracji XML. GIWS wygeneruje kod JNI do wywołania obiektu Java.

 
   
          
             
             
        
  
 <  nazwa pakietu =  "basic_example"  >  <nazwa obiektu  =  "MyComplexClass"  >  <  nazwa metody =  "myVeryComplexComputation"  returnType =  "long"  >  <param  type =  "double"  name =  "a"  />  <param  type =  "double"  name=  "b"  />  </metoda>  </obiekt>  </pakiet> 

Zobacz też

  • SWIG pozwala wywoływać C lub C++ z języków wyższego poziomu

Linki zewnętrzne