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
Next revision
Previous revision
laboratoare:reflection [2015/01/05 13:06]
cosmin.boaca [Exerciții]
laboratoare:reflection [2015/01/07 00:28] (current)
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.1420456017.txt.gz · Last modified: 2015/01/05 13:06 by cosmin.boaca