日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java jni helloword_JNI学习一:编写HelloWorld程序

發布時間:2024/7/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jni helloword_JNI学习一:编写HelloWorld程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請說明出處~

本文教程翻譯jni官方文檔的部分內容。

要查看Jni官方文檔,請點擊這里

先感嘆一下時光如水,歲月不留人哇有木有!!!認真想想在XMU的這三年,真的改變了我好多。

我還清楚地記得學習C語言寫的第一個程序就是Hello,world!

那個時候對編程語言真是一竅不通,不過也正是從那個時候開始,對編程產生了興趣~

閑話不多說,既然是入門教程,我們就從簡單的Hello,world開始。

這個程序使用java代碼調用C函數來輸出Hello,world.

步驟如下:

1、? 創建一個HelloWorld.java類,并在類中聲明native方法

2、? 利用javac命令編譯HelloWorld.java產生HelloWorld.class

3、? 利用javah –jni命令產生C頭文件HelloWorld.h,該頭文件為native方法的實現提供了函數原型。

4、? 寫出native方法HelloWorld.c

5、? 將HelloWorld.c編譯成native類庫,可以創建HelloWorld.dll或HelloWorld.so

6、? 運行HelloWorld程序,HelloWorld.class與(HelloWorld.so/HelloWorld.dll)會在運行時候被加載

流程圖:

實踐才能出真知,下面我們正式開始啦~

注:本人操作系統為Windows 7

1、在F盤創建目錄【HelloWorld】,然后編寫HelloWorld.java

public class HelloWorld {

//聲明本地方法print()

public native void print();

public static void main(String[] args) {

//創建一個HelloWorld對象

HelloWorld helloWorld = new HelloWorld();

//調用對象方法print

helloWorld.print();

}

//類裝載器,在類被使用時候加載

static{

System.loadLibrary("HelloWorld");

}

}

2、編譯HelloWorld.java生成HelloWorld.class

3、創建HelloWorld.h文件

查看該頭文件內容

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class HelloWorld */

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: HelloWorld

* Method: print

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_HelloWorld_print

(JNIEnv *, jobject);

#ifdef __cplusplus

}

#endif

#endif

看到聲明的方法了嗎?沒錯,就是它——Java_HelloWorld_print(JNIEnv*,jobject);

第一個參數是JNIEnv的接口指針,第二參數是HelloWorld對象的引用,類似于C++中的this指針。

注:JNIEXPORT和JNICALL兩個宏命令可以無視之~

【Java代碼】通過這個【函數接口】來調用底層【C代碼】

4、編寫HelloWorld.c實現這個方法

#include

#include

#include "HelloWorld.h"

JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj)

{

printf("yulongfei says:");

printf("Hello, world!\n");

return;

}

5、將HelloWorld.c編譯為native類庫

由于我是windows 7操作系統,所以編譯成HelloWorld.dll庫,這里需要使用工具Visual Studio 2008

操作步驟:

Step 1:啟動VS2008 --> 文件 --> 新建項目 --> Visual c++ --> Win32控制臺應用程序

Step 2: 名稱輸入HelloWorld,程序保存路徑你自己定,,點擊確定

Step 3:在向導中選擇【下一步】。在應用程序類型中,選擇【DLL】;在附加選項中,選擇【空項目】。選擇【完成】

Step 4: 打開資源管理器,將HelloWorld.h復制到【頭文件】中,將HelloWorld.c復制到【源文件】中。

Step 5: 選中菜單欄的【生成】-->【生成HelloWorld】;或者直接按下快捷鍵Shift+F6

注:如果報錯

請你定位到jdk安裝目錄下,然后將【include\jni.h】以及【include\win32\jawt_md.h】和【include\win32\jni_md.h】這三個文件拷貝到你VS安裝目錄的VC\include下,我的是D:\ProgramFiles\Microsoft Visual Studio 9.0\VC\include。

Step 6: 定位到VS2008剛剛建立的HelloWorld工程目錄下,將Debug目錄下的HelloWorld.dll 拷貝到F盤【HelloWorld】的目錄下,接下來就可以運行程序了。

6、運行程序

哈哈,開心吧,成功輸出:Hello, world!咯~~

本次學習源碼下載鏈接,請點擊這里!

總結

以上是生活随笔為你收集整理的java jni helloword_JNI学习一:编写HelloWorld程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。