JNI之Java調用so文件

1、背景:web項目中須要調用第三的一個so庫文件,只能略微學習下了,對android NDK開發方面應該也有所幫助,學習下html

2、調用方式android

第一種方式:Java直接調用so文件c++

第二種方式:Java經過本身的so文件,調用第三方的so文件web

 

3、參考示例(就不拷貝來拷貝去了,直接貼上我參考的網址吧)學習

參考網址:ui

Java調用so,c編譯成so    http://blog.chinaunix.net/uid-20180960-id-1972669.htmlthis

Java文件 -> *.class -> *.h -> 編寫*.c  ->編譯成.so ,執行spa

 

 

c++與c調用so文件           http://blog.csdn.net/yf210yf/article/details/11712999.net

  1. void *handle = dlopen("./libadd_c.so", RTLD_LAZY);  
  2.       
  3.     if(!handle)  
  4.     {  
  5.         return -1;  
  6.     }  
  7.       
  8.     typedef int (*add_t)(int a, int b);  
  9.     add_t add = (add_t) dlsym(handle, "add");  
  10.     if(!add)  
  11.     {  
  12.         dlclose(handle);  
  13.         return -1;  
  14.     }  
  15.     a = add(3, 4);  
  16.     dlclose(handle);  
  17.     return 0;  
jni中參數的傳遞、轉換       http://blog.csdn.net/liu_jun_y/article/details/9178501

jint Java_cn_hongdameng_aacencoder_AacEncoder_AacWrite(JNIEnv* env,jobject this,jbyteArray jBuffer, jint jBufferSize)unix

{
    jbyte* bBuffer = (*env)->GetByteArrayElements(env,jBuffer,0);
    unsigned char * buf=(unsigned char *)bBuffer;
...................
}
 
 
第三種:JNA方式也不錯,能夠直接調用第三方so文件,學習中...
相關文章
相關標籤/搜索