Sayfayı Yazdır | Pencereyi Kapat

JAVA ile native kullanmak

Nereden Yazdırıldığı: Datakent
Kategori: Diğer bölümler
Forum Adı: C# & ASP.NET
Forum Tanımlaması: C# ve ASP.NET ile ilgili soru / sorun ve paylaşım bölümü
URL: http://forum.datakent.com/forum_posts.asp?TID=2494
Tarih: 25.Nisan.2024 Saat 05:00


Konu: JAVA ile native kullanmak
Mesajı Yazan: aziz.alkurt
Konu: JAVA ile native kullanmak
Mesaj Tarihi: 22.Subat.2013 Saat 17:38
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);
      }
}
-----------------------------------------------------------------------------------------




Cevaplar:
Mesajı Yazan: turknetyazilim
Mesaj Tarihi: 24.Subat.2013 Saat 02:02
Eline sağlık...


Mesajı Yazan: aziz.alkurt
Mesaj Tarihi: 24.Subat.2013 Saat 06:26
Rica ederim. Faydalı olmabilmişsem ne mutlu bana

-------------



Sayfayı Yazdır | Pencereyi Kapat