一起学习
前言
在有的时候根据项目的需要不可以避免用到本地的东西,最常见的就是java想访问Window本地的东东,比如想调节鼠标移动速度、改变窗体底色、甚至用javaApplet做个基于windows的远程控制象pcanywhere那样,怎么办?下面就用个最简单的例子来入门。
步骤
写一个HelloWorld.java
class HelloWorld {
public native void displayHelloWorld();//定义本地方法
static {
System.loadLibrary("hello");//调入本地库
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
以上代码看起来好象和以前写的有点区别,出现了native关键字,但是不用太深究,你可以把这段代码看成是调用本地库的桥。
然后java HelloWorld.java生成HelloWorld.class
生成C的头文件
很简单,就用jdk提供的javah命令javah HelloWorldclass(注意,如果运行出错就把classpath指向class),成功运行后会出现HelloWorld.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
编写C文件并编译成DLL
#include
#include "HelloWorld.h"
#include
#include
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");//在这里实现java类中定义的方法
MessageBeep(0);//调用到win本地,会发一声响
return;
}
下载本文示例代码
JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇JNI开发简单入门篇
阅读(142) | 评论(0) | 转发(0) |