一、背景:web項目中需要調用第三的一個so庫文件,只能略微學習下了,對android NDK開發方面應該也有所幫助,學習下
二、調用方式
第一種方式:Java直接調用so文件
第二種方式:Java通過自己的so文件,調用第三方的so文件
三、參考示例(就不拷貝來拷貝去了,直接貼上我參考的網址吧)
參考網址:
Java調用so,c編譯成so http://blog.chinaunix.net/uid-20180960-id-1972669.html
Java文件 -> *.class -> *.h -> 編寫*.c ->編譯成.so ,執行
c++與c調用so文件 http://blog.csdn.net/yf210yf/article/details/11712999
- void *handle = dlopen("./libadd_c.so", RTLD_LAZY);
- if(!handle)
- {
- return -1;
- }
- typedef int (*add_t)(int a, int b);
- add_t add = (add_t) dlsym(handle, "add");
- if(!add)
- {
- dlclose(handle);
- return -1;
- }
- a = add(3, 4);
- dlclose(handle);
- return 0;
jint Java_cn_hongdameng_aacencoder_AacEncoder_AacWrite(JNIEnv* env,jobject this,jbyteArray jBuffer, jint jBufferSize)
{
jbyte* bBuffer = (*env)->GetByteArrayElements(env,jBuffer,0);
unsigned
char
* buf=(unsigned
char
*)bBuffer;
...................
}
第三種:JNA方式也不錯,可以直接調用第三方so文件,學習中...
