早就听说了 jni   可是到现在我才岛鼓出来,是不是很笨.......

好了费话不说了,开始进入正题

1.首先创建一个java类    Hello.java

public class Hello {
    //在静态块里面,把lib.dll导进来,记住不能写.dll的,否则会找不到的
    static
         System.loadLibrary("lib");
    //申明一个本地方法,该本地方法的实现在lib.dll中
    public native static void printString(String str);
    public static void main(String[] args) {
        Hello.printString("Hello");
}

2.用javac编译这个类 : java Hello.java


用javah对.clss生成C的头文件:javah Hello

现在头文件Hello.h的内容是:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello */#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
 * Class:     Hello
 * Method:    printString
 * Signature: (Ljava/lang/String;)V
JNIEXPORT void JNICALL Java_Hello_printString
  (JNIEnv *, jclass, jstring);#ifdef __cplusplus
#endif
#endif

要提醒大家的是可能jdk的版本不同,生成的头文件可能有点不同,,不过都大同小意,改改就行了,我用的是jdk1.5,根据上面的头文件,改一个.c文件,(现在只把这个.h的文件后辍改成.c就可以,先这么写) 记住最好复制一个,因为这个头文件还有用了,如何改一个.c文件呢?下面我告诉

先打开一个Visual C++,创建一个工程,记住这个工程应该是生成dll的工程,,应该选择Win32 Dynamic-Link Library

工程创建好了,那么把那个.c文件导进来

在导之前先把.c文件复制到工程下

以下是我改的.c文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello */#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
 * Class:     Hello
 * Method:    printString
 * Signature: (Ljava/lang/String;)V
JNIEXPORT void JNICALL Java_Hello_printString
  (JNIEnv *env, jclass obj, jstring str)
  printf(str);
#ifdef __cplusplus
#endif
#endif

这个时候你可能已经发现了  #include <jni.h>
这个头文件,它在哪里了,找到他了,应该入到哪了呢?/

jni.h在jdk1.5目录下的include目录下

那么把它放到visual目录下VC98/include下,编辑文件生成dll

在工程下找到debug 下的dll改名为lib.dll,把这个dll放到jdk1.5的bin目录下

现在用java Hello

就会输出Hello.哈哈,是不是很简单....................

global函数python用法 python中globals函数

Python 内置函数 locals() 和globals() 基于字典的访问局部变量和全局变量的方式。 python 使用叫做名字空间的东西来记录变量的轨迹。 名字空间是一个字典 ,它的键就是字符串形式的变量名字,它的值就是变量的实际值。 名字空间可以像 Python 的 dictionary 一样进行访问。 在一个 Python 程序中的任何一

python循环修改列表 python循环结果生成列表

Python列表生成式所谓的列表生成式,就是指的轻量级循环创建列表一.利用循环或者判断语句生成列表举例题目:生成一个1~10的列表。方法1: i = 1 a = [] while i <= 10: a.apend(i) for i in range(1,11): print(i) #注意:方法2用到的range()在Python2中存在风险——当范围较大时程序占用内存过多会被关

java根搜索算法 java字符串搜索算法
因为在网上搜寻hash算法的知识,无意中又找到一些字符串搜索算法。 由于之前已经学习过一些搜索算法,觉得应该可以归为一类。因此就写一篇文章来记录下学习的过程。 在一长字符串中找出其是否包含某子字符串。 首先当然还是简单算法,通过遍历来检索所有的可能: Java代码   1. public stat