关于jacob支持BSTR类型的经验总结
作者:朱金灿
来源:http://blog.csdn.net/clever101
jacob是实现Java和COM之间互操作的一个开源中间件。网上大多的程序示例基本上是使用jacob调用微软的office组件。
《JAVA中基于JACOB的COM组件调用研究》一文中提到jacob的一个缺陷是不支持用户自定义的COM组件。实际上这种说法不太正确。jacob一般是能支持com组件。经过我的测试,一般的接口参数是数值型的没有问题。对于字符型的参数,经过测试,对于char*类型,java是不支持的,对于com的字符串类型BSTR,经过艰难的摸索,发现jacob是支持的。java不支持char*而支持BSTR,不知道是不是因为BSTR是宽字符而char*是窄字符的缘故。
下面是我写的一个测试程序:
com接口如下:
interface IFace1 : IDispatch{[propget, id(1), helpstring("property Face1Name")] HRESULT Face1Name([out, retval] BSTR *pVal);[propput, id(1), helpstring("property Face1Name")] HRESULT Face1Name([in] BSTR newVal);[id(2), helpstring("方法Hello")] HRESULT Hello([in] BSTR left, [out,retval] BSTR* right);[id(3), helpstring("方法add")] HRESULT add([in] LONG one, [in] LONG two);};
Java调用程序如下:
import com.jacob.com.*;public static void main(String[] args) {ComThread.InitSTA();//初始化并放入内存中等待调用Dispatch printObj = null;Dispatch faceObj = null;try{printObj =new Dispatch("MultiFace.Face.1");//printObj =new Dispatch("SysAlgoNet.SysAlgoNetShell");System.out.println("获取dll对象成功!");if(null!=printObj){System.out.println(printObj.toString());String str = "hell0----"; byte[] bs = str.getBytes();// 将字符串转化为utf8String xx = new String(bs, "UTF-8");Variant v = Dispatch.call(printObj, "Hello",xx);System.out.println(v.toString());}}catch (Exception e){e.printStackTrace();}ComThread.Release();}
参考文献:
1. 通过 JACOB 实现 Java 与 COM 组件的互操作
2. java调用COM组件的几种工具
3. jacob c++里方法的类型是bstr ,为啥JAVA调用时老是出错
转载于:https://www.cnblogs.com/lanzhi/p/6470130.html
关于jacob支持BSTR类型的经验总结相关推荐
- mac邮件过滤器SpamSieve,支持任意类型的任意数量的电子邮件帐户
SpamSieve for mac是适用于Mac系统的一款邮件过滤器.spamsieve mac支持任意类型的任意数量的电子邮件帐户,可以通过各种标准可靠地识别哪些消息不是垃圾邮件,了解您的合法邮件是 ...
- EF支持复杂类型的实现
本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中有FristName和Las ...
- 实战07_SSM整合ActiveMQ支持多种类型消息
接上一篇:企业实战06_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572147 1.S ...
- 实战06_SSM整合ActiveMQ支持多种类型消息
接上一篇:企业实战05_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572129 1.S ...
- 实战05_SSM整合ActiveMQ支持多种类型消息
接上一篇:实战04_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572124 1.Str ...
- 04_SSM整合ActiveMQ支持多种类型消息
接上一篇:企业实战03_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572104 1.S ...
- 实战03_SSM整合ActiveMQ支持多种类型消息
接上一篇:企业实战02_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100572053 1.S ...
- 实战02_SSM整合ActiveMQ支持多种类型消息
接上一篇:企业实战01_SSM整合ActiveMQ支持多种类型消息https://blog.csdn.net/weixin_40816738/article/details/100557400 Act ...
- 实战01_SSM整合ActiveMQ支持多种类型消息
ActiveMQ能干什么? 主要功能涉及JMS Provider用来帮助实现高可用.高性能.高伸缩.易用的企业级面向消息服务的系统. ActiveMQ支持消息类型如下: 1.StreamMessage ...
最新文章
- tensorflow 进阶(三),BP神经网络之两层hidden_layer
- 治标更治本,如何从根源防护DDoS***
- Django(part18)--静态文件
- php编程对联,形容程序员的对联大全
- python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
- C#服务启动以及服务指令
- scala里集合排序函数的使用
- 通过FD耗尽实验谈谈使用HttpClient的正确姿势 1
- 关于 stylus的全局变量的配置
- php curl模拟post请求提交数据
- SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
- Duilib中caption的问题
- STC 串口下载电路 - CH340G或CH340N USB转串口以及漏电隔离
- MySql使用存储过程开发
- springboot集成Swagger3.0
- 触摸屏分屏拓展屏软件(可自定义界面)
- CF 2022寒假练习
- 高通字库芯片GT20L16S1Y驱动 0.96寸 OLED 任意显示中文
- JAVA 语言程序设计与数据结构 教材课本源码 和 课后习题答案
- oracle增删改查操作