java中如何调用.dll文件、.oca文件和.ocx文件 请问怎么在JAVA中调用.dll文件、.oca文件和.ocx文件,最好有示例代码,多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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! 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> java socket 乱序收发问题 从mysql里取出的事件类型打印出来是Byte[]数组???? ==与equals()的区别?<有实例程序> conection放在那一层做啊? 关于字母输出的问题 在浏览器上的APPLET 程序,出现如下错误。请问如何处理? 请教关于jmf的问题,请大家帮忙!!!我已经搞了好多天了,还是没有解决 java编程,读如数据编写格式怎么写?(超级新手问题) 在每个类包中都有一个sig文件,它是用来作什么的 谁有‘JAVA的电子版学习教程’? 关于网络蜘蛛的内容? 相信有的朋友遇到多,关于JNI调用DLL的问题
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!
调用代码如下:<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>