成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mac OS上編譯JNI的動態(tài)庫

付倫 / 837人閱讀

摘要:在中加載的類庫注意的動態(tài)庫在上面的命名是文件,而在上面的命名是類庫的名字需要加上也就是在上面動態(tài)庫的名稱應(yīng)該是生成通過命令生成文件這樣就可以生成了一個的文件。在中他所在的位置是使用編譯就可以得到一個編譯好的文件下面需要把文件打包成動態(tài)庫。

JNIJava Native Interface的縮寫,是為了在Java上能夠調(diào)用本地語言尤其是Cc++設(shè)計的。 下面就看下如何在Mac OS上面如何使用JNI的調(diào)用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函數(shù)中調(diào)用了定義的native的方法sayHello。 在static中加載native的類庫macjni,注意JNI的動態(tài)庫在linux上面的命名是.so文件,而在Mac OS上面的命名是.jnilib,類庫的名字需要加上lib,也就是在Mac OS上面動態(tài)庫的名稱應(yīng)該是libmacjni.jnilib

生成.class 通過命令生成.class文件: >javac MacJni.java

這樣就可以生成了一個MacJni.class的文件。 ##生成.h文件 通過命令可以直接生成.class對應(yīng).h文件: >javah MacJni

生成了一個MacJni.h的文件。文件內(nèi)容如下:

* 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,這個方法對應(yīng)定義的native方法public native void sayHello();。 JNI在C語言中定義的規(guī)則是:Java_包名_類名_方法名

編寫.c文件 根據(jù)定義.h方法,需要編寫一個一個.c文件MacJni.c,用來實現(xiàn).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文件打包成動態(tài)庫。 ##打包動態(tài)庫 使用gcc可以直接打包動態(tài)庫 >gcc -dynamiclib -o libmacjni.jnilib MacJni.o

把.o文件打包成了libmacjni.jnilib,就可以通過Java調(diào)用C語言了。

java MacJni

hello from jni

源碼地址:https://github.com/jjz/jni

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65605.html

相關(guān)文章

  • 在OpenSUSE上編安裝sphinx擴展

    摘要:準(zhǔn)備工作要在中安裝擴展,你必須先安裝好,筆者使用的是中文分詞,因此我安裝的是。配置修改文件,將添加到擴展選項部分。錯誤解決在安裝的過程中,遇到一個比較二的錯誤??偨Y(jié)在下,很多時候安裝和搜索依賴庫的目錄是不一致的,應(yīng)當(dāng)仔細檢查。 準(zhǔn)備工作 要在PHP中安裝sphinx擴展,你必須先安裝好sphinx,筆者使用的是中文分詞,因此我安裝的是coreseek。 如何安裝coreseek請看:h...

    xiongzenghui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<