java调用dll文件_在JAVA里面如何调用DLL文件

谢谢,如果可能,请给例子

|

只能使用JNI来实现,给一个我写的小例子,仅供参考:

这是一个打印hello world的例子,打印由c的printf来完成

package mytest;

public class HelloNative

{

//将要调用的打印方法声明为native,且直接加分号即可

public native static void greeting();

static

{

//这个dll是有打印函数的c编译成的

//系统在程序开始是导入它,这样才能成功

System.loadLibrary("newPrintfDll");

}

}

//主方法类

package mytest;

import mytest.*;

public class HelloNativeTest

{

public static void main(String[] args)

{

HelloNative.greeting();

}

}

成功!

注意:首先,你要将HelloNative编译成class文件,然后使用javah编译该class文件,生成.h文件(要注意路径,如果有包,要退到包名上一级来编译.h文件,否则即使dll调用成功,也会显示找不到greeting方法)

将该.h文件中的关键代码粘帖到cpp文件中(有vc向导生成一个dll的文件模版),关键代码:

JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting

(JNIEnv* env, jclass cl)//稍做了修改

{

printf("asdfasdf");

}

编译成dll文件,放到如c:winntsystem32下,你的.h文件也要放到相应目录(在编译dll时放到vc98include下,还有jni.h和jni_md.h也要找到它们放入),这样就基本完成了,具体细节我无法讲得太仔细建议去看参考资料.谢谢.

|

我现在很忙,没时间给你详细讲,有问题给我发mail:slaner@163.com

|

java 自然语言

汗……

是哪本书上翻译的?

|

jni 方法,具体的你可以到www.IBM.com/cn/去找一下

那里有一套完整介绍JNI的书

|

调用com组件可以吗,用http://users.rcn.com/danadler/javacom/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于Java调用复杂的DLL文件接口,需要进行一些额外的步骤和注意事项。下面是一个一般性的指导: 1. 确保DLL文件可用:首先,确保你有正确的DLL文件,并且该DLL文件是针对Java编写的。如果DLL文件是为其他编程语言编写的,你可能需要使用Java本机接口(JNI)来进行交互。 2. 编写JNI接口:在Java中,使用JNI来与DLL文件进行交互。你需要编写一个本地方法,将其声明为native,并使用JNI来加载和调用DLL文件中的函数。JNI提供了一组函数来管理Java和本机代码之间的通信。 3. 生成头文件:通过Java本机接口开发工具(如javah)生成与你编写的JNI接口对应的头文件。这个头文件将包含函数声明和JNI函数的映射。 4. 实现JNI接口:在C/C++中实现JNI接口中定义的本地方法。这将涉及到与DLL文件的交互,包括函数调用和数据传递等。 5. 编译并链接:编译你的本地代码,并将其链接到Java代码中。这将生成一个可执行的Java文件,其中包含对DLL文件进行调用的本地方法。 6. 加载和使用DLL:在Java代码中加载生成的本地库,并通过调用本地方法来使用DLL中的功能。 需要注意的是,Java本机接口(JNI)需要一定的熟练程度,并且使用不当可能会导致内存泄漏或程序崩溃等问题。确保仔细阅读JNI文档,并遵循最佳实践。 希望这些步骤能帮助你成功调用复杂的DLL文件接口!如有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值