请问怎么在JAVA中调用.dll文件、.oca文件和.ocx文件,最好有示例代码,多谢!

解决方案 »

  1.   

    java调用dll动态链接库是通过jni的!HelloNative.java:实用类,提供一个静态本地方法greeting(),打印出一个消息串。其中greeting方法调用了下面的本地代码。  
      HelloNative.c:本地实现代码。  
      HelloNativeTest.java:应用主文件,调用HelloNative实用类的greeting()方法。  
       
      //:HelloNative.java  
      class   HelloNative   {  
          public   native   static   void   greeting();  
          static   {  
          //HelloNative是下面将由HelloNative.c生成的dll文件。  
              System.loadLibrary("HelloNative");  
          }  
      };  
       
      编译上面的.java文件后,在生成的.class目录下,使用javah命令生成HelloNative.class的C头文件:  
      javah   HelloNative    
       
      生成的HelloNative.h文件如下:  
      /*   DO   NOT   EDIT   THIS   FILE   -   it   is   machine   generated   */  
      #include   <jni.h>  
      /*   Header   for   class   HelloNative   */  
      #ifndef   _Included_HelloNative  
      #define   _Included_HelloNative  
      #ifdef   __cplusplus  
      extern   "C"   {  
      #endif  
      /*  
        *   Class:           HelloNative  
        *   Method:         greeting  
        *   Signature:   ()V  
        */  
      JNIEXPORT   void   JNICALL   Java_HelloNative_greeting  
          (JNIEnv   *,   jclass);  
      #ifdef   __cplusplus  
      }  
      #endif  
      #endif  
       
      拷贝生成的HelloNative.h,另存为HelloNative.c,并填充JNICALL   Java_HelloNative_greeting方法体,得到下面的HelloNative.c文件  
      //HelloNative.c  
      /*   DO   NOT   EDIT   THIS   FILE   -   it   is   machine   generated   */  
      #include   <jni.h>  
      /*   Header   for   class   HelloNative   */  
      #ifndef   _Included_HelloNative  
      #define   _Included_HelloNative  
      #ifdef   __cplusplus  
      extern   "C"   {  
      #endif  
      /*    
        *   Class:           HelloNative    
        *   Method:         greeting    
        *   Signature:   ()V    
        */  
        JNIEXPORT   void   JNICALL   Java_HelloNative_greeting     (JNIEnv   *   env,   jclass   cl){  
            printf("Hello,   Native   World!\n");  
        }  
        #ifdef   __cplusplus  
        }  
        #endif  
        #endif  
       
      使用Windows自带的c/c++编译器,编译上面的HelloNative.c:  
       
      cl   -Id:\j2sdk1.4.1\include   -Id:\j2sdk1.4.1\include\win32   -LD   HelloNative.c   -FeHelloNative.dll  
       
      执行这条命令后将生成HelloNative.dll文件。这个DLL动态链接库就是下面我们在HelloNative.java文件中调用的本地文件。如果是在Unix/Linux下,请使用相应操作系统的c编译器,生成的库文件是HelloNative.so。(这里jdk的安装路径为 d:\j2sdk1.4.1)  
       
      至此,Windows平台上的本地库文件和Java文件已经准备就绪,下面写一个简单的测试程序来测试一下本地调用吧。  
      //:   HelloNativeTest.java  
      class   HelloNativeTest   {  
          public   static   void   main(String[]   args)   {  
              HelloNative.greeting();  
          }  
      }  
      编译、运行这个程序,将打印出Native版的:  
      Hello,   Native   World!   
      

  2.   

    ocx控件需要在本地注册,才能访问,在IE下可以访问,在FF下不行(其他的浏览器没有试过)
    调用代码如下:<OBJECT
      classid="clsid:35B30F1A-CFB6-4588-A943-9188D45E0E5F"
      codebase="file:///F:\资 料\ocx\Moving.ocx#version=1,0,0,1"
      width=821
      height=540
      align=center
      hspace=0
      vspace=0
    >
    </OBJECT>