Eclipse中java、C++ 和JNI環境搭建
Eclipse中java、C++ 和JNI環境搭建
一、工具準備
1.Eclipse IDE。
(1)下載地址:http://www.eclipse.org/downloads/。我喜歡使用JavaEE版本的,如下圖:使用的Eclipse Helios(3.6.2) Packages for Windows
(2)下載之後解壓到自己想要解壓的地盤,開啟後設置JDK開發環境。(這個就不具體說了)
2.CDT(C/C++ Development Tooling)。
(1)下載地址:http://www.eclipse.org/cdt/downloads.php。根據頁面提示可以下載外掛包或者Eclipse線上安裝
(2)安裝好CDT後,Eclipse中Window—preferences會有C/C++選項,如圖:
3.安裝MinGW。
下載後如圖:(裡面的這三個工具我們都要用到)
(2)安裝,雙擊mingw-get-inst-20110316.exe檔案,選擇自己喜好位置(比如:D:/MinGW),這個過程聯網,會花費一定的時間。
4.下載gdb-6.6.tar.bz2
(2)解壓後,裡面有這幾個目錄
全選複製到MinGW目錄下,選擇全部覆蓋。
(3)安裝MSYS(MSYS是make及命令列的一個實現)。
下載地址:http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe
雙擊安裝,安裝介面是命令列介面,需要輸入兩次y,並且要輸入MinGW安裝路徑,如:D:/MinGw,如圖所示:
(4)在配置下一系統環境變數Path,將D:/MinGW/bin;加入Path。
(5)進入D:/MinGW/bin目錄,找到mingw32-make.exe檔案,複製一個副本,改名為 make.exe,如圖所示:
因為CDT預設的是make命令,當然也可以更改CDT的預設設定。
(6)OK。到這裡環境已經搭建好了。下面我們做個Hello World的例子吧。
二、建立java工程,命名為jniJava
(1)如圖所示:
編寫Hello.java程式碼:
package com.jni;
publicclass Hello {
static {
// hello是之後編譯出來的dll檔名hello.dll
// 但是一定不要加.dll副檔名
System.loadLibrary("hello");
}
publicnativevoid print();
publicstaticvoid main(String[] args) {
new Hello().print();
}
}
(2)不出意外的話,在jniJava工程目錄的bin目錄下會自動編譯成class檔案
(3)開啟命令列,進入jniJava的bin目錄下,執行javah com.jni.Hello,在bin目錄下會生成一個.h檔案,如圖:
三、建立C++工程,命名為jniCpp
(1)
將com.jni.Hello.h拷貝到jniCpp工程的src目錄下
(2)建立com.jni.Hello.cpp檔案,編寫程式碼:
#include<jni.h>
#include"com_jni_Hello.h"
#include<iostream>
usingnamespace std;
JNIEXPORT void JNICALL Java_com_jni_Hello_print
(JNIEnv *env, jobject obj)
{
cout<<"Hello Jni World!"<<endl;
return;
}
(3)建立Hello.def檔案,裡面寫:
EXPORTS
Java_com_jni_Hello_print
(4)
四、編譯dll檔案
(1)開啟命令列視窗,進入jniCpp工程的src目錄,執行g++ -c -I"D:/Program Files/Java/jdk1.6.0_17/include" -I"D:/Program Files/Java/jdk1.6.0_17/include/win32" -o hello.o com_jni_Hello.cpp命令(具體引數根據自己的環境設定),會生成hello.o檔案,再執行g++ -shared -o hello.dll hello.o hello.def命令,會生成hello.dll檔案。
五、開始java進行jni呼叫了
1.將hello.dll拷貝到jniJava工程的根目錄下,如圖:
2.執行之前寫好的Hello.java檔案吧,成功輸出:
Hello Jni World!
六、完。