Java調用C++類庫--JNI


JNI是Java平台中的一個重要的功能,這里我把我做的Demo總結一下,分享一下,我會把每個步驟盡量的詳細的展現出來。
這里我就不講解JNI的原理了,google,百度一下,到處都是
好了,直接來講步驟吧, 文章最后給出了C++和Java的Demo
第一步:安裝Java jdk,eclipse。
第二步,配置Java環境變量, java環境變量配置
第三步,新建一個Java應用程序,名為:TestNativeCode,包名:com.liyong.TestNativeCode,類名:TestNativeCode
第四步,在TestNativeCode類里面添加如下代碼:
package com.liyong.TestNativeCode;

public class TestNativeCode {
    public native void sayHello();
    public static void main(String[] args) {
        System.loadLibrary("NativeCode");
        TestNativeCode nativeCode=new TestNativeCode();
        nativeCode.sayHello();
        }
}

第五步,編譯Java文件
1,運行-->cmd-->進入TestNativeCode項目的src目錄下編譯該Java類,命令 javac ./com/liyong/TestNativeCode/TestNativeCode.java。在該TestNativeCode.java目錄下會生成TestNativeCode.class文件
2,使用javah生成頭文件,命令 javah -jni com.liyong.TestNativeCode.TestNativeCode。在src目錄下生成com_liyong_TestNativeCode_TestNativeCode.h文件。

第六步,編譯C++類庫
1,打開VS2008,新建Win32 項目NativeCode,如圖所示:

確定后,在“應用程序類型”中選擇“DLL”,如圖:

2,將上一步生成的com_liyong_TestNativeCode_TestNativeCode.h添加到項目頭文件中。

3,在NativeCode項目的“源文件”中添加NativeCode.cpp文件,具體如蓉如下

#include "stdafx.h"
#include "com_liyong_TestNativeCode_TestNativeCode.h"
#include <iostream>
using namespace std;

JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_sayHello(JNIEnv * env, jobject obj)
{
cout<<"Hello NDK!"<<endl;
//printf("Hello NDK!");
}

4,使用Release編譯,生成NativeCode.dll,將其拷貝到java環境變量Java_Home的Bin目錄下,比如,LZ的Java_Home目錄是
C:\Program Files\Java\jdk1.6.0_25,將NativeCode.dll拷貝到C:\Program Files\Java\jdk1.6.0_25\bin目錄下。

第七步,運行Java應用程序,會輸出“Hello NDK!”,Ok,成功!這里只是一個簡單的例子,具體的應用就靠大家舉一反三啦

這里給出Demo的源碼:C++:NativeCode.rar Java:TestNativeCode.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM