摘要:在中加載的類庫注意的動態庫在上面的命名是文件,而在上面的命名是類庫的名字需要加上也就是在上面動態庫的名稱應該是生成通過命令生成文件這樣就可以生成了一個的文件。在中他所在的位置是使用編譯就可以得到一個編譯好的文件下面需要把文件打包成動態庫。
JNI是Java Native Interface的縮寫,是為了在Java上能夠調用本地語言尤其是C和c++設計的。 下面就看下如何在Mac OS上面如何使用JNI的調用C語言。 ##編寫Java類 先定義一個Java類
public class MacJni { public native void sayHello(); static { System.loadLibrary("macjni"); } public static void main(String[] args) { MacJni macJni = new MacJni(); macJni.sayHello(); } }
這里定義了一個MacJni的類,在它的main函數中調用了定義的native的方法sayHello。 在static中加載native的類庫macjni,注意JNI的動態庫在linux上面的命名是.so文件,而在Mac OS上面的命名是.jnilib,類庫的名字需要加上lib,也就是在Mac OS上面動態庫的名稱應該是libmacjni.jnilib
生成.class 通過命令生成.class文件: >javac MacJni.java這樣就可以生成了一個MacJni.class的文件。 ##生成.h文件 通過命令可以直接生成.class對應.h文件: >javah MacJni
生成了一個MacJni.h的文件。文件內容如下:
* DO NOT EDIT THIS FILE - it is machine generated */ #include/* Header for class MacJni */ #ifndef _Included_MacJni #define _Included_MacJni #ifdef __cplusplus extern "C" { #endif /* * Class: MacJni * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_MacJni_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
該文件定義了一個方法Java_MacJni_sayHello,這個方法對應定義的native方法public native void sayHello();。 JNI在C語言中定義的規則是:Java_包名_類名_方法名
編寫.c文件 根據定義.h方法,需要編寫一個一個.c文件MacJni.c,用來實現.h中的方法#include#include "MacJni.h" JNIEXPORT void Java_MacJni_sayHello(JNIEnv * env, jobject obj){ printf("hello from jni"); }
這個方法很簡單就是打印一句話:hello from jni。 ##編譯.c 在MacJni.h中有一句話 > #include
jni.h是jdk中C語言庫的頭文件,在編譯.c的時候需要指定jni.h的所在。在Mac OX中他所在的位置是:
/System/Library/Frameworks/JavaVM.framework/Headers
使用gcc編譯: > gcc -I/System/Library/Frameworks/JavaVM.framework/Headers -c MacJni.c
就可以得到一個編譯好的文件MacJni.o,下面需要把.o文件打包成動態庫。 ##打包動態庫 使用gcc可以直接打包動態庫 >gcc -dynamiclib -o libmacjni.jnilib MacJni.o
把.o文件打包成了libmacjni.jnilib,就可以通過Java調用C語言了。
java MacJni
hello from jni
源碼地址:https://github.com/jjz/jni
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65605.html
摘要:準備工作要在中安裝擴展,你必須先安裝好,筆者使用的是中文分詞,因此我安裝的是。配置修改文件,將添加到擴展選項部分。錯誤解決在安裝的過程中,遇到一個比較二的錯誤??偨Y在下,很多時候安裝和搜索依賴庫的目錄是不一致的,應當仔細檢查。 準備工作 要在PHP中安裝sphinx擴展,你必須先安裝好sphinx,筆者使用的是中文分詞,因此我安裝的是coreseek。 如何安裝coreseek請看:h...
閱讀 4746·2021-10-13 09:39
閱讀 1956·2019-08-29 11:12
閱讀 1150·2019-08-28 18:16
閱讀 1863·2019-08-26 12:16
閱讀 1249·2019-08-26 12:13
閱讀 2996·2019-08-26 10:59
閱讀 2302·2019-08-23 18:27
閱讀 2996·2019-08-23 18:02