成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Mac OS上編譯JNI的動(dòng)態(tài)庫(kù)

付倫 / 920人閱讀

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

JNIJava Native Interface的縮寫,是為了在Java上能夠調(diào)用本地語(yǔ)言尤其是Cc++設(shè)計(jì)的。 下面就看下如何在Mac OS上面如何使用JNI的調(diào)用C語(yǔ)言。 ##編寫Java類 先定義一個(gè)Java

public class MacJni {

    public native void sayHello();

    static {
        System.loadLibrary("macjni");
    }

    public static void main(String[] args) {
        MacJni macJni = new MacJni();
        macJni.sayHello();

    }
}

這里定義了一個(gè)MacJni的類,在它的main函數(shù)中調(diào)用了定義的native的方法sayHello。 在static中加載native的類庫(kù)macjni,注意JNI的動(dòng)態(tài)庫(kù)在linux上面的命名是.so文件,而在Mac OS上面的命名是.jnilib,類庫(kù)的名字需要加上lib,也就是在Mac OS上面動(dòng)態(tài)庫(kù)的名稱應(yīng)該是libmacjni.jnilib

生成.class 通過(guò)命令生成.class文件: >javac MacJni.java

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

生成了一個(gè)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

該文件定義了一個(gè)方法Java_MacJni_sayHello,這個(gè)方法對(duì)應(yīng)定義的native方法public native void sayHello();。 JNI在C語(yǔ)言中定義的規(guī)則是:Java_包名_類名_方法名

編寫.c文件 根據(jù)定義.h方法,需要編寫一個(gè)一個(gè).c文件MacJni.c,用來(lái)實(shí)現(xiàn).h中的方法
#include 
#include "MacJni.h"

JNIEXPORT void Java_MacJni_sayHello(JNIEnv * env, jobject obj){
    printf("hello from jni");
}

這個(gè)方法很簡(jiǎn)單就是打印一句話:hello from jni。 ##編譯.c 在MacJni.h中有一句話 > #include

jni.h是jdk中C語(yǔ)言庫(kù)的頭文件,在編譯.c的時(shí)候需要指定jni.h的所在。在Mac OX中他所在的位置是:

/System/Library/Frameworks/JavaVM.framework/Headers

使用gcc編譯: > gcc -I/System/Library/Frameworks/JavaVM.framework/Headers -c MacJni.c

就可以得到一個(gè)編譯好的文件MacJni.o,下面需要把.o文件打包成動(dòng)態(tài)庫(kù)。 ##打包動(dòng)態(tài)庫(kù) 使用gcc可以直接打包動(dòng)態(tài)庫(kù) >gcc -dynamiclib -o libmacjni.jnilib MacJni.o

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

java MacJni

hello from jni

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65605.html

相關(guān)文章

  • 在OpenSUSE上編安裝sphinx擴(kuò)展

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

    xiongzenghui 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<