共享,JNI用法,初学适用.
最近学JAVA在网上一直没找到关于JNI的示例,最后自己安说明书上的方法做了几个示例,现共享:
//无参数传递的C调用用法
//新建一个一个文本文件改名为HelloWorld.java
//内容如下:
class HelloWorld {
public native void displayHelloWorld();
public native void ListRectang();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
new HelloWorld().ListRectang();
}
}
//----------------------------------
//在命令提示符下输入
//javac HelloWorld.java
//生成HelloWorld.class文件
//在命令提示符下输入
//javah -jni HelloWorld
//生成HelloWorld.h文件这是C的头文件
//-----------------------------------
//无参数传递的C调用用法
//新建一个一个文本文件改名为HelloWorldImp.c
//内容如下:
#include <jni.h>
#include "HelloWorld.h" //刚生成的文件
#include <stdio.h>
//下面这个函数的格式可以参照刚生成的.h头文件来定义
//JAVA DOC里有说明
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
JNIEXPORT void JNICALL
Java_HelloWorld_ListRectang(JNIEnv *env, jobject obj)
{
int i=0, j=0;
for (i=0; i< 0; i++)
{
for (j=0; j<10; j++)
{
printf("*");
}
printf("\n");
}
}
//-------------------------------------------------------
//运行VC编译程序编译C源文件
//注:-Ic:\java1.5.0\include 是linux式传参方法.-I表示include与后面的c之间无空格,后同.
cl -Ic:\java1.5.0\include -Ic:\java1.5.0\include\win32 -LD HelloWorldImp.c -FeHello.dll
//之后就可运行这个程序了
//java HelloWorld
//你看到了什么?