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版本是内存优化的版本;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值