一、实验准备
-
下载或安装java jdk (1.6或者以上);
安装vs studio ;http://mocom.xmu.edu.cn/home/project/soft/Visual%20Studio/vs_community__2017.exe
熟悉IDEA 或者 eclipse 等开发环境;
查看博客:利用c#生成一个com组件:
https://www.cnblogs.com/591028872-allan/p/7651771.html
查看博客:利用java调用组件:
https://blog.csdn.net/crab530143383/article/details/17136863
运行给定的例子:Java调用C#com.rar
二、实验目标
构建一个com组件,该组件可以对一个字符串数组进行加密和解密;(加/解密算法自己定义,或者调用调用其他的库)
三、实验设计与实现过程
一、利用C#创建一个com组件
1.1用Visual studio2017创建一个工程
1.2在“解决方案资源管理器”里面重命名.cs文件为comtojava.cs
1.3工程属性设置
点击“应用程序-程序集信息”,勾选“使程序集COM可见”
点击“生成”,勾选“为COM互操作注册”
点击"签名",勾选为程序集签名,并新建
在新建的窗口中输入密钥名,并取消勾选“使用密码保护密钥文件”
1.3在ComToJava.cs中输入代码,进行对字符串的加密和解密
1.4生成两个新的Guid,替换程序代码中的Guid
点击“工具-创建GUID”
1.5生成解决方案
二、利用java调用组件
2.1注册COM组件至系统
运行visual studio开发人员命令符(以管理员身份运行)
cd到ComToJava.dll所在的路径下(即Visual studio工程下的bin-Debug下)
执行:gacutil /i ComToJava.dll 添加dll至全局缓存
执行:regasm ComToJava.dll 注册dll至系统
运行regedit查看注册表
将附件jacob-1.19文件夹里的jacob-1.19-x64.dll放到目录C:\Windows\System32下
将附件jacob-1.19文件夹里的jacob-1.19-x86.dll放到目录C:\Windows\SysWOW64下
2.2用IDEA打开ComToJava工程
2.3导入jacob.jar
2.4配置jdk
2.5修改代码中的相应参数,运行程序(设置加密字符串和解密字符串)
运行程序,得到结果
3、总结与分析
只c#调用com生产解决方案的时候,出现Java无法调用的问题。
后来发现是生成解决方案时候出现了问题。
解决方案:以管理员身份运行visual studio,重新生成解决方案解决了这一问题。