Windows下JNI的使用教程

來源:互聯網
上載者:User

標籤:str   window   運行   print   32位   http   extern   gets   步驟   

JNI的使用大致有以下4個步驟:

一、在Java中寫native方法

二、用javah命令產生C/C++標頭檔

三、寫對應的C/C++程式實現標頭檔中聲明的方法,並編譯成庫檔案

四、在Java中載入這個庫檔案並使用

 

工具:

1. Eclipse for Java

2. Visual Studio 2015

依賴:

JDK和JRE:1.8.0_144版本

 

步驟:

在Eclipse建立一個java項目

 

添加一個java類,放在com.jni包下

注意:java代碼都不要放到預設包下(就是不寫package語句就會放到預設包),預設包下的方法在其他地方都不能調用!!

 

寫native方法,native方法就是聲明一個非java實現的方法,比如用C/C++實現

 

1 package com.jni;2 3 public class JNI {4     public native String getString();5 }

 

在Eclipse產生,此時在項目目錄會產生對應的.class檔案,Eclipse會將.class檔案放在項目目錄的bin檔案夾下

 

開啟cmd,進入bin目錄

 

運行javah命令,產生C/C++標頭檔,注意要帶上java包名

注意:此處是在bin目錄運行javah,不能進入com/jni下來運行javah,否則不能產生標頭檔。

 

此時在bin目錄下產生了JNI.h標頭檔

 

 標頭檔內容如下:

 1 /* DO NOT EDIT THIS FILE - it is machine generated */ 2 #include <jni.h> 3 /* Header for class com_jni_JNI */ 4  5 #ifndef _Included_com_jni_JNI 6 #define _Included_com_jni_JNI 7 #ifdef __cplusplus 8 extern "C" { 9 #endif10 /*11  * Class:     com_jni_JNI12  * Method:    getString13  * Signature: ()Ljava/lang/String;14  */15 JNIEXPORT jstring JNICALL Java_com_jni_JNI_getString16   (JNIEnv *, jobject);17 18 #ifdef __cplusplus19 }20 #endif21 #endif

 

 

 

 

接下來開啟Visual studio 2015,建立一個空的win32控制台程式,在程式類型選擇DLL:

 

 

配置JNI開發環境:

在【項目設定】 -> 【VC++目錄】 -> 【包含目錄】中,添加JNI標頭檔的路徑

JNI標頭檔一般放在jdk目錄下的include檔案夾,還有include檔案夾下的win32檔案夾

注意release和debug以及32位和64位的選擇

 

 

 將剛剛產生的標頭檔複製到vs項目目錄下,在項目中添加該標頭檔,同時添加cpp實現標頭檔中的函數

main.cppd代碼如下:

#include "com_jni_JNI.h"JNIEXPORT jstring JNICALL Java_com_jni_JNI_getString(JNIEnv *env, jobject obj) {    return env->NewStringUTF("string from C++");}

 

 產生項目,在項目目錄的x64或release檔案夾下產生了JNI.dll動態庫,講dll檔案複製到Eclipse項目目錄下

 

 

修改JNI.java代碼,載入JNI庫並添加運行代碼

 1 package com.jni; 2  3 public class JNI { 4     static { 5         System.loadLibrary("JNI"); 6     } 7      8     public native String getString(); 9     10     public static void main(String args[]) {11         JNI jni = new JNI();12         System.out.println(jni.getString());13     }14 }

 

產生並運行,就可以看到從c++中返回的字串了

 

Windows下JNI的使用教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.