gpt4 book ai didi

java - com4j 与 jacob 从 Java 调用 COM 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:39:33 26 4
gpt4 key购买 nike

我维护一个使用 Jacob 的遗留 Java 应用程序或 Java-COM Bridge,通过 MS VBA 和 MS Word 的 COM 接口(interface)进行调用。我一直在看com4j来自 Sun,看起来很有前途。

我觉得它不错的原因是它使用 vtable 绑定(bind)到方法,而不是 IDispatch。假设我们操作的所有 COM 对象都存在 vtable 接口(interface),使用它们而不是 IDispatch 似乎更干净。回到 COM 和 CORBA 作为热门二进制接口(interface)技术的时代,我似乎记得通过 vtable 进行的早期绑定(bind)比通过 IDispatch 进行的后期绑定(bind)提供了更好的性能。

有人从 Jacob 迁移到 com4j 了吗?如果是这样,有哪些陷阱和经验教训?

最佳答案

我在针对一个简单的 COM 对象进行集成时同时使用了 Jacob 和 Com4j。我最终选择了 Com4j,主要是因为 Jacob 泄漏了太多内存。与 Jacob 相比,我认为 Com4j 在设置后更加直接。如果我没记错的话,Jacob 在进行实际的 COM 调用之前需要更多的设置和输入。在 Com4j 中,您将只使用提供的工厂。

Com4j 一直为我们工作,但我们在路上遇到了一些障碍。首先,生成的界面没有正确生成,我们需要手动调整它们。我记得的主要问题是我们无法使 @ReturnValue 注释正常工作。此外,我们需要手动更正 @VTID 枚举。

我们面临的另一个主要问题是我们不能将 Holder(out params)类用于 short。我们最终制作了一个从 Integer 转换为 Short 的 Delphi 包装器,而不是对 Com4j 进行任何更改。

最后,我记得我在集成的时候有点担心项目状态。似乎没有定期更新(自上次维护版本以来已有两年)。

关于java - com4j 与 jacob 从 Java 调用 COM 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com