java如何引用dll文件?

有一个dll文件,之前在vs中引用后直接using导入就可以使用了,例如创建对象Document document = new Document();使用document对应的方法等,idea如何能像vs一样直接引用dll文件呢,用了JNative插件,好像只能直接调用其方法,如何先引用然后去创建对象再去调用对象中的方法呢

JNative j = new JNative("H:\\xxx.dll", "方法");
阅读 4.1k
1 个回答

没办法。

本质是因为不同语言对于“类型”这一概念的定义和数据结构都不一样,所谓面向对象到底层了全都是 C/C++ 那一套基本类型。所以你看 JNI(JNative 基于此)只能做面向过程,不能做面向对象,而且传参只能是结构体 + 基本类型。

微软能这么搞是因为是自家操作系统(Windows) + 自家编程语言(VC++ / C# / VB),再加上微软搞了个 COM(Component Object Model)充当面向对象的抽象层,所以在 Windows 上微软自己的语言调用起来你就觉得很爽。

Java 上可没有这玩意儿,不过你可以考虑 jacob(点此传送),这个支持以面向对象的方式来调用 COM。不过一来要求你引用的 DLL 是 COM 的,不是啥 DLL 都能这么用;二来它还不是强类型的,所有类型都是一个 ActiveXComponent、所有对象实例都是一个 Dispatch,写法上很像是反射,肯定是没有 IDE 智能感知的;三来这个项目已经停止维护很多年了,有啥坑你就自己看着踩吧。


感觉你是要读写 Word?那不有现成的 POI 吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题