记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的! 本站域名:www.xyzlotus.cn

2006-11-15 | JNI简单用法

上一篇 / 下一篇  2007-12-18 08:45:56 / 天气: 冷 / 心情: 平静 / 个人分类:JAVA

学习了JNI,大概总结了一下。不过在做的过程中,我也碰到了好多问题,不过终于都搞定了,很有成就感的说。

1. Java class

package com.xida.jnitest;

public class Testjni {

       native void testJNIcall();--------------通过NATIVE方法调用C的方法。

       static {

              System.loadLibrary("testJNIImpl");

       }      

       public static void main(String[] args) {

              Testjni test = new Testjni();

              test.testJNIcall();               

       } 

2. 编译 java class

3.javah—生成C的.h 文件

 javah -jni -classpath D:\myworkspace\JavaTrainning -o Testjni.h com.xida.jnitest.Testjni 

4. c/c++ file

 #include <jni.h>

#include "Testjni.h"

JNIEXPORT void JNICALL Java_com_xida_jnitest_Testjni_testJNIcall

  (JNIEnv *env, jobject jobj) 

{

printf("aaaaaaaaaaaaaaaaa");

}  

5.make dll

 cl -Ic:/j2sdk1.4.2_09/include -Ic:/j2sdk1.4.2_09/include/win32 -LD testJNIImpl.cpp -FetestJNIImpl.dll

如果大家对VC很熟悉的话,可以用VC建立一个空的win32 Dynamic Link library工程,然后把刚才产生的头文件包括进去,然后自己写.cpp文件。注意在tools/option下的Directories选项中include进去jdk目录下的include目录,和include目录下的win32目录,最后编译产生.dll文件。

6.将.dll文件拷贝到工程的目录下,注意要把当前工程的目录设到PATH里边去,要不运行会出错误。

或者将.dll文件拷贝到PATH的路径下,比如 jdk/bin目录下,运行就可以了


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-13  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3498
  • 日志数: 30
  • 文件数: 3
  • 建立时间: 2007-12-17
  • 更新时间: 2008-10-08

RSS订阅

Open Toolbar