eclipse 開發JNI

在網上查了一些關於jni的資料終於解決了寫一些對自己有用的同時也總結一些別人出現的錯誤希望對大家有所幫助。

工程已傳到我的資源下面;

 

 

首先寫java

package com.org;

 

publicclassmypro

{

 

    /**

     * @param args

     */

    static

    {

       

        System.loadLibrary("gre");

   

    }

    publicnativevoid fun();

    publicstaticvoid main(String[] args)

    {

        //TODO Auto-generated method stub

 

        new mypro().fun();

    }

 

}

開始菜單

cmd

G:

Cd Android

Cd mypro

Cd bin

 

之後javah–jni cpm.org.MyClass

生成頭文件 com_org_MyClass.h

如果找不到文件的話那麼

Javah –help 可以自己看看

Javah –classpath  .  –jnicpm.org.MyClass

注意 –classpath後面有個點 代表當前路徑。

 

 

打開頭文件看到以下內容

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

#include <jni.h>

/* Header for classcom_org_MyClass */

 

#ifndef _Included_com_org_MyClass

#define _Included_com_org_MyClass

#ifdef __cplusplus

extern "C" {

#endif

/*

 * Class:    com_org_MyClass

 * Method:   fun

 * Signature: ()V

 */

JNIEXPORT void JNICALL Java_com_org_MyClass_fun

 (JNIEnv *, jobject);

 

#ifdef __cplusplus

}

#endif

#endif

 

 

 

好下面來寫關於C的部分

首先將C:\Program Files\Java\jdk1.7.0_04\include  下面的jni.h

C:\Program Files\Java\jdk1.7.0_04\include\win32 下面的 jni_md.h 

jawt_md.h

或者全都拷貝的Cinclude目錄下面

D:\Program Files\Microsoft Visual Studio9.0\VC\include

然後就是新建c項目

 

點擊finish 就可以了

 

這裏說明一下由於之前網上很多介紹都是選的Empty project但是我這邊那樣寫dll沒有方法;使用dllexp.exe  (我資源裏面有)看不到函數。

 

接着就是將com_org_MyClass.h拷貝到HeadFiles下面

 

#include "stdafx.h"

#include "com_org_MyClass.h"

#include <stdio.h>

 

JNIEXPORT void JNICALL Java_com_org_MyClass_fun

(JNIEnv*, jobject)

{

    printf("greatto see you ");

    return;

};

 

gre.cpp文件的內容如下

#include "stdafx.h"

#include "com_org_MyClass.h"

#include <stdio.h>

 

JNIEXPORT void JNICALL Java_com_org_MyClass_fun

(JNIEnv*, jobject)

{

    printf("greatto see you ");

    return;

};

然後將G:\cProjects\gre\Debug 下面的  gre.dll拷貝到java mypro 工程的bin下面

cmd  到bin目錄下面  java  com_org_MyClass就會出現結果了。

 

補充你可以用dllexp先看一下里面的信息

 

 

下面當到了eclipse裏面運行的時候就會報錯

右擊項目名à選擇屬性propertiesà在左邊列表內選擇“Java Build Path”à在右邊選項卡用選擇“source”à點開項目名前的“+”,選擇“Nativelibrary location”“Edit”選擇路徑 (dll所在目錄)。(當然如果將dll拷貝到workspace下也可以用相對路徑。也可右擊“src”設定其propertiesNative Library項。)

.

 

也可在環境變量裏面加這條路徑

又或在run configration 下面 arguments

VM arguments

寫入下面一句

-Djava.library.path=G:\Android\mypro\bin

 

 

或者直接將gre.dll拷貝到c\window\system32下面;

   開發時released版本是內存優化的版本;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章