User Tools

Site Tools


Problem constructing authldap
laboratoare:reflection
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Last revision Both sides next revision
laboratoare:reflection [2015/01/05 13:06]
cosmin.boaca [Exerciții]
laboratoare:reflection [2015/01/07 00:28]
cosmin.boaca [Java Native Interface (JNI)]
Line 19: Line 19:
  
 <code java NativeMethodDeclaration.java>​ <code java NativeMethodDeclaration.java>​
-private int native_add(int num1, int num2);+package laborator;​ 
 + 
 +Class NativeTest { 
 +     private int nativeAdd(int num1, int num2); 
 +}
 </​code>​ </​code>​
  
-Declararea și definirea funcției ​in C este ceva mai complicată și nu va fi prezentată.+Functia ​in C/C++ trebuie sa aiba urmatoarea definite 
 + 
 +<code C> 
 +extern "​C"​ { 
 +Java_laborator_NativeTest_nativeAdd(JNIEnv *env, JObject obj, Jint a, Jint b) { 
 +     ​return a + b; 
 +
 +
 +</​code>​ 
 + 
 +Numele metodei in C derivă din numele fully qualified al metodei din Java. (nume_pachet.nume_clasa.nume_metoda). Pentru metoda de mai sus, acest nume este laborator.NativeTest.nativeAdd. 
 +Numele metodei din C se formeaza prin concatenarea Java_ la numele metodei în care . este inlocuit cu _ . 
 +Metoda ​va fi compilată într-o bibliotecă partajată (shared_library) cu linking de C (extern "​C"​),​ acest lucru fiind necesar pentru a putea fi găsită corect din Java. 
  
 ==Reflection== ==Reflection==
laboratoare/reflection.txt · Last modified: 2015/01/07 00:28 by cosmin.boaca