i don't konw,but study for you!

解决方案 »

  1.   

    i dont use it,but i heard that it should use JNI
      

  2.   

    Windows构件模型是基于COM的,目前JDK没有提供任何直接访问COM的类库。因此,如果需要访问这些资源,我们必须通过JNI实现。JNI是Java世界和其它语言间的一座桥,Java通过访问JNI定义的接口来获取服务。在JNI的另一面,我们可以通过C/C++或其它语言实现这些接口。通过本地语言C/C++我们可以创建COM构件,并且使用COM的服务,最后将结果返回给Java程序。here is a tutorial
    http://java.sun.com/docs/books/tutorial/native1.1/index.html
      

  3.   

    but, if you are using Microsoft Visual J++6.0 or J# everything will become easier.
    tell me if you are using it.
      

  4.   

    我还是看看jni的说明再说吧,谢谢
      

  5.   

    zuo yige
    public class NativeDemo 
    {  
             int i;
        int j;
        public static void main(String args[])
        {
                 NativeDemo ob = new NativeDemo();
               ob.i = 10;
                ob.j = ob.test();
                System.out.println("this is ob.i:"+ob.i+"\n");
                System.out.println("this is ob.j:"+ob.j);
        } 
        public native int test();
        static 
        {
         System.loadLibrary("NativeDemo");    
        }

    2.Compile file NativeDemo.java 
    Javac NativeDemo.java3.Use javah.exe to produce file NativeDemo.c and NativeDemo.h
    a : javah NativeDemo to produce NativeDemo.h which is: 
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include 
    /* Header for class NativeDemo */#ifndef _Included_NativeDemo
    #define _Included_NativeDemo#pragma pack(4)typedef struct ClassNativeDemo {
    long i;
    long j;
    } ClassNativeDemo;
    HandleTo(NativeDemo);#pragma pack()#ifdef __cplusplus
    extern "C" {
    #endif
    extern long NativeDemo_test(struct HNativeDemo *);
    #ifdef __cplusplus
    }
    #endif
    #endif
    b : use javah -stubs NativeDemo to produce NativeDemo.c which seems as:
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include /* Stubs for class NativeDemo */
    /* SYMBOL: "NativeDemo/test()I", Java_NativeDemo_test_stub */
    __declspec(dllexport) stack_item *Java_NativeDemo_test_stub(stack_item *_P_,struct execenv *_EE_) {
        extern long NativeDemo_test(void *);
        _P_[0].i = NativeDemo_test(_P_[0].p);
        return _P_ + 1;
    }
     4. Write your own implimentation of method test()
    //file name test.c 
    #include 
    #include "nativedemo.h"
    #include long NativeDemo_test(HNativeDemo *this)
    {
        printf("hello:!\n");
        printf("this is in the native method!\n");
        return (unhand(this)->i)*2;
    } 5. link NativeDemo.c and test.c to produce NativeDemo.dll
    Use VC++5.0 tools :Cl.exe 
    Cl /GD NativeDemo.c test.c /LD
    then we get NativeDemo.dll系统将有如下提示:NativeDemo.c
    test.c
    Generating Code.../out:NativeDemo.dll
    /dll
    /implib:NativeDemo.lib
    NativeDemo.obj
    test.obj
    Creating library NativeDemo.lib and object NativeDemo.ex
    Press any key to continue 
    6.Run java NativeDemowe get the such result:D:\vj11user\native>java NativeDemo
    hello:!
    this is in the native method!
    this is ob.i:10this is ob.j:20D:\vj11user\native> 
    NOTE:
    Do not forget this: 
    c:> set INCLUDE=d:\java\include;d:\java\win32;%INCLUDE%
    C:>set LIB =d:\java\lib;%LIB%
    where d:\java is the directory of your jdknew version jdk1.2.1 :With new jdk1.2.1 :1.javac NativeDemo.java2. javah NativeDemo to produce head file (You need not to javah -stubs NativeDemo to produce NativeDemo.c file),You don't need the c file. Just the NativeDemo.h is sufficient!3.Use VC++ produce a window dll project and add the NativeDemo.h to it.then implement the function. All is OK!
    NOTE: the data type conversion between java and c++.See jni.h for more information.