Visual Studio için C++ boş "test" adlı bir proje oluşturalım. İçerisine "test.cpp" adında bir dosya açalım. Projeye sağ tıklayıp properties>C\C++>General>Additional include Directories kısmına (java programlama için JDK kurulmuş olması gerekir.) "C:\Program Files (x86)\Java\jdk1.6.0_38\include" ve "C:\Program Files (x86)\Java\jdk1.6.0_38\include\win32" eklediğimiz zaman
"test.cpp" dosyası içersinde #include "jni.h" yapabiliriz.
Birde "properties>C\C++>Code Generation" bölümünde Runtime Library kısmını "Multi Thread/MT" yaparsanız, oluşturduğunuz dll execude yapılırken C++ 2010 gibi kütüphanelere ihtiyaç duymaz.
"test.cpp" kodu için ----------------------------------------------------------------------------------------- #include "jni.h" #include <string.h> extern "C" { JNIEXPORT jbyteArray Java_datakent_test_getStringBytes(JNIEnv *env, jclass clazz,jstring sx) { const char *sxx= env->GetStringUTFChars(sx, NULL); jbyteArray result=env->NewByteArray(strlen(sxx)); env->SetByteArrayRegion( result, 0,strlen(sxx), (const jbyte*)sxx); return result; } } -----------------------------------------------------------------------------------------
kodu derleyip d:/test.dll yaptık
java tarafı ----------------------------------------------------------------------------------------- class datakent.test { static native byte[] getStringBytes(String sx); public static void main(String []xx) { System.load("d:/test.dll"); byte []cc=getStringBytes("Hello World!"); for(byte c : cc) System.out.print("%02X",c); } } -----------------------------------------------------------------------------------------
|