搭建Window环境下Jni开发步骤(2)
2013-06-06 22:00
211 查看
一,建立一个java文件
1.新建hello.java文件
public class Hello{
private native void print();
public static void main(String[] args){
new Hello().print();
}
static{
System.loadLibrary("HelloDll");
}
}
Hello类首先声明了一个private native print方法. static那几行是本地库。
在Java代码中声明本地方法必须有"native"标识符,native修饰的方法,在Java代码中
只作为声明存在。
在调用本地方法前,必须首先装载含有该方法的本地库. 如Hello.java中所示,置
于static块中(即HelloDll),在Java VM初始化一个类时,首先执行这部分代码,这可保证调用本地方
法前,装载了本地库。
2.编译该java文件并生成头文件
用命令行javac编译,可以在该文件下生成Hello.class文件,然后用javah -jni Hello。译者:"-jni"为默认参数,可有可无.上述命令,生成Hello.h文件.该文件核心代码为:
JNIEXPORT void JNICALL Java_Hello_print
(JNIEnv *, jobject);
3.利用生成的.h头文件编写C/C++文件
必须根据javah生成的本地函数声明实现函数,如下:
#include<jni.h>
#include<stdio.h>
#include "Hello.h"
JNIEXPORT void JNICALL Java_Hello_print
(JNIEnv *nev, jobject jthis)
{
printf("hello\n");
return;
}
4.编译该c/c++文件(推荐用VC6.0)
我这里推荐用编译器编译,虽然大多数人用命令行编译,但不知道是我的VC配置路径有问题还是其他什么问题,在命令行里编译总是出现各种错误,所以推荐一个比较笨的办法,你在VC6.0里新建工程->Win32 Dynamic-Link Library(看清楚)。然后选择空的DLL工程,接着新建C++ Header File,取名为Hello.h,将刚才生成的头文件内容复制进去,然后新建C++ Sourcs File,也将你自己写的C++文件内容复制进去。
接下来这一步很重要,如图所示:
在VC里选择 工具->选项->目录,在右上角目录栏选择Include files
![](http://img.blog.csdn.net/20130606215105906)
可以看到下面多出来两个jdk的路径,对,就是你jdk安装路径,分别为include和win32文件夹下,你可以打开这两个文件夹,在下面可以看到jni.h和jni_md.h这另个文件,其实该路径就是引入这两个文件。
这项完成后就可以编译该工程了,先编译,然后运行,你可以在debug目录下看到生成了对应的DLL文件,接着你将该DLL文件复制到你java文件那个文件夹下,(注意:那个dll文件的名字一定要是你java代码里static关键字下你写的那个名字)。然后再命令行里java Hello。就可以看到控制台输出"hello"了。
![](http://img.blog.csdn.net/20130606215842390)
可以看到控制台输出hello。即一个简单的windows下jni例子成功了。
1.新建hello.java文件
public class Hello{
private native void print();
public static void main(String[] args){
new Hello().print();
}
static{
System.loadLibrary("HelloDll");
}
}
Hello类首先声明了一个private native print方法. static那几行是本地库。
在Java代码中声明本地方法必须有"native"标识符,native修饰的方法,在Java代码中
只作为声明存在。
在调用本地方法前,必须首先装载含有该方法的本地库. 如Hello.java中所示,置
于static块中(即HelloDll),在Java VM初始化一个类时,首先执行这部分代码,这可保证调用本地方
法前,装载了本地库。
2.编译该java文件并生成头文件
用命令行javac编译,可以在该文件下生成Hello.class文件,然后用javah -jni Hello。译者:"-jni"为默认参数,可有可无.上述命令,生成Hello.h文件.该文件核心代码为:
JNIEXPORT void JNICALL Java_Hello_print
(JNIEnv *, jobject);
3.利用生成的.h头文件编写C/C++文件
必须根据javah生成的本地函数声明实现函数,如下:
#include<jni.h>
#include<stdio.h>
#include "Hello.h"
JNIEXPORT void JNICALL Java_Hello_print
(JNIEnv *nev, jobject jthis)
{
printf("hello\n");
return;
}
4.编译该c/c++文件(推荐用VC6.0)
我这里推荐用编译器编译,虽然大多数人用命令行编译,但不知道是我的VC配置路径有问题还是其他什么问题,在命令行里编译总是出现各种错误,所以推荐一个比较笨的办法,你在VC6.0里新建工程->Win32 Dynamic-Link Library(看清楚)。然后选择空的DLL工程,接着新建C++ Header File,取名为Hello.h,将刚才生成的头文件内容复制进去,然后新建C++ Sourcs File,也将你自己写的C++文件内容复制进去。
接下来这一步很重要,如图所示:
在VC里选择 工具->选项->目录,在右上角目录栏选择Include files
可以看到下面多出来两个jdk的路径,对,就是你jdk安装路径,分别为include和win32文件夹下,你可以打开这两个文件夹,在下面可以看到jni.h和jni_md.h这另个文件,其实该路径就是引入这两个文件。
这项完成后就可以编译该工程了,先编译,然后运行,你可以在debug目录下看到生成了对应的DLL文件,接着你将该DLL文件复制到你java文件那个文件夹下,(注意:那个dll文件的名字一定要是你java代码里static关键字下你写的那个名字)。然后再命令行里java Hello。就可以看到控制台输出"hello"了。
可以看到控制台输出hello。即一个简单的windows下jni例子成功了。
相关文章推荐
- 搭建Window环境下Jni开发步骤(1)
- JBoss5开发EJB3.0环境搭建步骤详解
- Android JNI编程(一)——JNI概念以及C语言Dev-C++开发环境搭建、编写HelloWorld
- React Native Window 开发环境搭建图文详解
- FlashIDE+AirSDK,Window开发环境搭建
- Linux环境下搭建php开发环境的操作步骤
- Linux环境下搭建php开发环境的操作步骤
- window bbl 开发环境搭建
- 【基于Windows系统】教你如何在Android中使用JNI以及NDK开发环境搭建
- JNI开发之环境搭建(windows)
- JNI开发环境搭建
- Android jni开发资料--NDK环境搭建
- window 搭建android cocos2dx开发环境
- ffmpeg开发环境搭建--(window)
- MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
- Android开发之旅:环境搭建及HelloWorld(window下)
- 在Mac OS下搭建LNMP开发环境的步骤详解
- 【Mac版】串口开发搭建环境步骤
- 史上最易懂的Android jni开发资料--NDK环境搭建
- android之JNI开发环境搭建