如何利用java调用dll文件

westdevils 2003-09-25 11:45:07
如何利用java调用dll文件

要求有具体说明!100分不够再加!

但一定要清楚、详细!

...全文
147 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
holmesII 2004-03-23
  • 打赏
  • 举报
回复
我也想要
albert.holmes@163.com
THK
yandg 2004-02-26
  • 打赏
  • 举报
回复
yandg@126.com
谢谢!!
dutzhp 2004-02-26
  • 打赏
  • 举报
回复
大虾,我也想要. miszhp@163.com
ifsheiscrying 2004-02-25
  • 打赏
  • 举报
回复
zealot2002@sohu.com
Shrewdcat 2004-02-23
  • 打赏
  • 举报
回复
shrewdcat@163.com
Shrewdcat 2004-02-23
  • 打赏
  • 举报
回复
代码贴出来资源共享好了,发具体人太麻烦了吧?
yandg 2004-02-23
  • 打赏
  • 举报
回复
可否也来一份,谢谢
yandg@126.com
you7246mk 2004-02-23
  • 打赏
  • 举报
回复
我也想要一份
you7246mk@vip.sina.com
ks99017129 2004-02-03
  • 打赏
  • 举报
回复
ks99017129@163.com
谢谢
Yujlyjl 2004-02-03
  • 打赏
  • 举报
回复
iamluodong(嗨) 可否给我一份
liaoyang_yjl@163.com
谢谢
zagzag 2003-09-30
  • 打赏
  • 举报
回复
zag928@163.com
iamluodong 2003-09-30
  • 打赏
  • 举报
回复
调用ActivX终极解决方案:
使用javaComBridge,它就是在java和Com中间搭了一个桥梁.非常的好使,
我前两天用它完成了全文索引(Index serveice,Ado.recordset,ado.Connection)
你要的话留一个mail.
shagan 2003-09-25
  • 打赏
  • 举报
回复
一、生成一个Java 类
---- 里面包含一些native的函数,这些函数就是将在C中要实现的。源程序如下:
import Java.lang.*;
public class JavaCallC
{
public JavaCallC ()
{
System.loadLibrary(“JavaCallC”); //载入系统动态库
}
//以下两个函数将在C语言中实现
//传入参数为string类型,返回int型
public native int StrInIntOut (string_ str);
//传入参数为int类型,返回string型
public native String IntInStrOut (int_ iIndex);
}

----关于参数转换,int和string是最常用的两种类型,本文将在下面详细说明。其他类型与此相似,从略。
二、编译Java源文件,生成C语言头文件
----编译Javac JavaCallC.Java, 生成JavaCallC.class;生成头文件Javah JavaCallC,生成JavaCallC.h。
----生成的头文件如下:

#include < jni.h >
#ifndef_Included_pwdChecker
#define _Included_pwdChecker
#ifdef _cplusplus
extern “C”{
#endif
JNIEXPORT jint JNICALL_ Java_JavaCallC_StrInIntOut
(JNIEnv *,jobject,jstring);
JNIEXPORT jstring JNICALL_ Java_JavaCallC_IntInStrOut
(JNIEnv *,jobject,jint);

----较早版本中生成方法不太一样,要分两步,以上面的Java文件为例,首先执行Javah JavaCallC,生成JavaCallC.h文件;然后执行Javah -stubs JavaCallC,生成JavaCallC.c文件。
三、创建动态库
----首先创建一个空的动态连接库工程文件;然后创建JavaCallC.c文件,并将其加入工程。文件主要内容如下:
#include < jni.h >
JNIEXPORT jint JNICALL_ Java_
JavaCallC_StrInIntOut(JNIEnv*jenv,
jobject_ jobj,jstring jstr)
{
const char *theStr;
//得到Java的string类中
//所包含的字符串指针
theStr=(*jenv)- >Get_
StringUTFChars(jenv,jstr,0);
return 1234;
}
JNIEXPORT jstring JNICALL_ Java_JavaCallC_
IntInStrOut(JNIEnv*jenv,jobject_ jobj,
jint iCount)
{
char cpText [] =“Java call c test”;
long 1GetInt = iCount;
//生成string
return (*jenv)- >NewStringUTF(jenv, cpText);
}
Java中的int型数据是32位的,在Windows中要用long型数据表示;关于方法GetStringUTFChars和NewStringUTF所涉及到的内存空间不需要释放,使用完后Java会释放它们;C程序中不必包含JavaCallC.h文件,但函数头必须和头文件中的保持一致;头文件jni.h保存在Java系统目录下的include中,把该目录和该目录下的Win32目录加入include路径列表中去。
----编译完成后,将动态库文件拷贝到系统path指定的路径中,就可以像使用其他Java类一样使用这个JavaCallC类了。
cxyPioneer 2003-09-25
  • 打赏
  • 举报
回复
很想知道

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧