国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Mac OS上編譯JNI的動態庫

付倫 / 821人閱讀

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

JNIJava Native Interface的縮寫,是為了在Java上能夠調用本地語言尤其是Cc++設計的。 下面就看下如何在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

相關文章

  • 在OpenSUSE上編安裝sphinx擴展

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

    xiongzenghui 評論0 收藏0

發表評論

0條評論

付倫

|高級講師

TA的文章

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