Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > C/C PLUSPLUS > » 正文

jni初级(一)

来源: 高级java工程师 分享至:
1.jni 是java与c++提供的接口,这个接口可以使c++与java进行交互。
2.在开发之前必须掌握java与c++技术。
3.使用开发工具 jdk  myeclipse   visual.

本地代码实现
1.写一个java类,使用jdk编译成.class文件,命令如下 :javac  XX.java.
2.将.calss文件编译成.h文件   命令如下:javah XX类名 (在jdk中bin目录中 javah可以将java生成c++).

3.将.h文件放入c++工程中。
4.jni.h和jni_md.h文件,这2个文件在java的jdk中,include包中win32中。因为在程序中要调用,所以必须引入,如果报错就是你没有正确引入的原因。

5.java生成的.h文件引入c工程的头文件,在源文件中创建c++文件即可。


source.cpp
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "..\jni.h"
/* Header for class TestNative */
/*注意:这里是引入文件,就是导包*/

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestNative
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_TestNative_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

class source
{
public:
	source(void);
	~source(void);
};


TestNative.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "..\jni.h"
/* Header for class TestNative */
/*注意:这里记得引入文件*/

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestNative
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_TestNative_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

class source
{
public:
	source(void);
	~source(void);
};


TestNative.java
public class TestNative {
	
	public  native void  sayHello();

	public static void main(String [] args){
         //调用本地文件库“nativeCode”
	System.loadLibrary("nativeCode");
                  //创建对象
		TestNative t = new TestNative();
                  //调用sayHello();方法,做个动作。
		t. sayHello();	
		
	}
}

查看c++文件库,进入debug包中,可以看到生成的NativeCode.dll文件。
将c++项目中得debug路径放入path中,这样修改文件时就能动态调试。
使用javac 命令再次调用 java的.class文件,这时候可以发现结果:c++中的HelloWorld就能正确的在java中输出。(参考附件图5)


大家注意一点: native 是声明与c++交互的一个标志,sayHello();是一个方法。

附件有参考图片,只供参考,如有问题,请留言。
  • 大小: 190.5 KB
  • 大小: 37.1 KB
  • 大小: 21.9 KB
  • 大小: 46.3 KB
  • 大小: 43.4 KB
  • 查看图片附件

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史