一个简单的JNI调用的实现
2013-05-15 15:04
232 查看
1. 首先创建一个java类:
HelloWorld.java:
/**
* 本地方法调用学习
* @author jianying.wcj
* @date 2013-5-15
*/
public class HelloWorld {
static {
System.loadLibrary("HelloDll");
}
public static void main(String args[]) {
HelloWorld hw = new HelloWorld();
hw.sayHello();
}
public native void sayHello();
}
2. 用javac命令编译这个类,生成 .class 文件 :
命令:javac HelloWorld.java
3. 用javah命令 生成JNI的头文件:
命令:javah HelloWorld
Ps:运行完这个命令就会生成一个名字叫做 HelloWorld.h的头文件
4. 用Visual studio 2010 创建一个Win32 动态链接库工程(如图):
5. 将我们刚才生成的.h文件拷贝到第4步创建的工程的头文件目录中去,并且新建HelloDLL.cpp文件(如图):
6. HelloDLL.cpp 代码如下:
#include "stdafx.h"
#include "HelloWorld.h"
#include <iostream>
using namespace std;
JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv *, jobject){
cout << "hello world" <<endl;
}
7. 引入JDK自带的JNI的头文件信息:
操作:项目右键》属性》配置属性》VC++目录》包含目录
将JDK自带的 %JAVA_HOME%/include/;%JAVA_HOME%/include/win32这两个目录添加到包含目录中。如图:
Ps:当引入JDK自带的头文件后就不会报错了。
8. 编译整个项目,生成DLL文件:
右键工程》生成 :
9. 将生成的DLL文件拷贝到java工程需要运行的类的同一个包下面,运行测试:
详情:在刚才创建的Win32 动态链接库工程中的Debug目录下有个Hello.dll文件,如图:
将它拷贝到第2步编译好的HelloWorld.class 同一个包下,如图:
然后用java命令运行:java HelloWorld, 如下图就看到运行结果了
Ps:以上就是一个实现一个JNI程序调用的DEMO,没事搞着玩的!
HelloWorld.java:
/**
* 本地方法调用学习
* @author jianying.wcj
* @date 2013-5-15
*/
public class HelloWorld {
static {
System.loadLibrary("HelloDll");
}
public static void main(String args[]) {
HelloWorld hw = new HelloWorld();
hw.sayHello();
}
public native void sayHello();
}
2. 用javac命令编译这个类,生成 .class 文件 :
命令:javac HelloWorld.java
3. 用javah命令 生成JNI的头文件:
命令:javah HelloWorld
Ps:运行完这个命令就会生成一个名字叫做 HelloWorld.h的头文件
4. 用Visual studio 2010 创建一个Win32 动态链接库工程(如图):
5. 将我们刚才生成的.h文件拷贝到第4步创建的工程的头文件目录中去,并且新建HelloDLL.cpp文件(如图):
6. HelloDLL.cpp 代码如下:
#include "stdafx.h"
#include "HelloWorld.h"
#include <iostream>
using namespace std;
JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv *, jobject){
cout << "hello world" <<endl;
}
7. 引入JDK自带的JNI的头文件信息:
操作:项目右键》属性》配置属性》VC++目录》包含目录
将JDK自带的 %JAVA_HOME%/include/;%JAVA_HOME%/include/win32这两个目录添加到包含目录中。如图:
Ps:当引入JDK自带的头文件后就不会报错了。
8. 编译整个项目,生成DLL文件:
右键工程》生成 :
9. 将生成的DLL文件拷贝到java工程需要运行的类的同一个包下面,运行测试:
详情:在刚才创建的Win32 动态链接库工程中的Debug目录下有个Hello.dll文件,如图:
将它拷贝到第2步编译好的HelloWorld.class 同一个包下,如图:
然后用java命令运行:java HelloWorld, 如下图就看到运行结果了
Ps:以上就是一个实现一个JNI程序调用的DEMO,没事搞着玩的!
相关文章推荐
- JNI简单实现Java调用C++/C的HelloWorld
- Android调用Jni,非常简单的一个Demo
- JNI简单实现Java调用C++/C的HelloWorld
- 【远程调用框架】如何实现一个简单的RPC框架(五)优化三:软负载中心设计与实现
- 【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用
- Android调用Jni,非常简单的一个Demo
- JNI实现最简单的JAVA调用C/C++代码
- 调用baidu搜索的API实现一个简单的www.baidu.com
- 一个简单的oracle分页存储过程的实现和调用
- 【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计
- 一个简单的oracle分页存储过程的实现和调用
- 一个简单的Android程序,JNI实现Native C/C++
- Java远程调用(二)实现一个简单的服务框架
- 简单实现Android NDK编译jni调用动态库开发
- Castle AOP 系列(四):实现一个简单的基于上下文调用的权限校验机制
- 实现一个最简单的plot函数调用:
- 用 C# 实现一个简单的 Rest Service 供外部调用
- 一个简单的oracle分页存储过程的实现和调用
- Java实现一个简单的RPC框架(七) 反射机制调用类函数
- Jni 简单实战 写一个c调用java的辅助类