本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!”

环境与工具:

◆.net framework 3.5 C#

◆java jdk1.5, Tomcat 5.5

◆jacob-1.15-M3

实现例子:

一、C# 制作Com组件

新建一个Class 项目,取名TestCom

代码

using System;  using System.Collections.Generic; 
using System.Linq;  using System.Text; 
using System.Runtime.InteropServices;  
namespace TestCom 
{      [Guid("E9BCF867-CD81-40d0-9591-ED28D1ED2B53")]     
public interface IEncrypt     
{          [DispId(1)]          
string GetEncrypt(string str,string str2);     
}     
[Guid("33A6E58D-E1F5-4b53-B2E2-03B9F8BA2FAD"),
ClassInterface(ClassInterfaceType.None)]     
public class Encrypt:IEncrypt     
{          public Encrypt(){}          
public string GetEncrypt(string str,string str2)         
{                           
return  "测试 | "+str+"|"+str2;         
}     

}

打开 Project--> Properties菜单 在Application标签中打开 Assembly Information 将Make assembly Com-Visible一项选中。再切换到Build标签将 Register for COM interop一项选中。

Guid的生成:打开Visual Studio Command Prompt 输入guidgen 命令调出工具。类型选择Registry Format,点击New Guid,然后COPY出来。

[DispId(1)]为函数的标识。如果有多个函数可相应的在函数前面加[DispId(2)], [DispId(3)]…

编译程序Debug目录中会生成 TestCom.dll 和TestCom.tlb

手工注册Com方法:

打开Visual Studio Command Prompt进入Debug目录,运行命令注册:regasm TestCom.DLL /tlb:TestCom.tlb

二、Java调用Com

部署jacob

◆在开发环境中引入jacob.jar

◆拷贝jacob-1.15-M3-x86.dll 文件到 C:\Windows\System32目录,如果是Web应用的话还需要拷贝到jdk1.5.0_16\bin目录(jdk安装目录下的bin目录)

java调用代码

代码

import com.jacob.activeX.ActiveXComponent; 
import com.jacob.com.ComThread; 
import com.jacob.com.Dispatch; 
import com.jacob.com.Variant; 
public class test
{      
/**       * @param args       */     
public static void main(String[] args)
{         
// TODO Auto-generated method stub         
try
{             
ActiveXComponent dotnetCom = null;             
dotnetCom = new ActiveXComponent("TestCom.Encrypt");             
Variant var = Dispatch.call(dotnetCom,
"GetEncrypt","哥是第一个参数","哥是第二个参数");             
String str  = var.toString(); //返回值             
} catch (Exception ex)
{                 
ex.printStackTrace();             
}     
}  
}

这便完成了Java调用.net DLL的方法!

转载于:https://www.cnblogs.com/bihailantian/archive/2010/09/25/1834656.html

C# 制作Com组件:java调用.net DLL的方法相关推荐

  1. java调用C++ DLL库方法

    转载地址: https://www.cnblogs.com/xiaocainiao2hao/p/5619862.html 最近一个项目要开发网页端人脸识别项目,人脸识别的算法已经写好,是C++版,但是 ...

  2. Java调用第三方dll

    刚接触Java几天,项目需要,使用Java调用can卡的dll,发现网上的帖子有很多不明确的地方,特此写之. 首先安装开发环境,考虑到兼容性,安装的JDK和eclipse都是32位的,正常安装结束后, ...

  3. Java调用C++程序实现方法

    Java调用C++程序实现方法(1) 这篇博文是自己在学习过程中,踩了很多坑之后,为了避免广大热爱编程的盆友再像我这样浪费太多时间,索性将自己的实现方法总结出来,以供大家参考.程序最终实现的是Hell ...

  4. eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法

    linux下通过eclipse开发用java调用c程序的方法: 1.先建立好java工程并建立java文件如下: public class testso {     static {         ...

  5. C# 使用DllImport 调用 native DLL的方法

    若要声明一个方法使其具有来自 DLL 导出的实现,请执行下列操作: 使用 C# 关键字 static 和 extern 声明方法. 将 DllImport 属性附加到该方法.DllImport 属性允 ...

  6. java调用接口实现的方法_java调用接口的实现方法

    java调用接口的实现方法 发布时间:2020-06-29 11:08:46 来源:亿速云 阅读:78 作者:Leah 本篇文章给大家分享的是有关java调用接口的实现方法,小编觉得挺实用的,因此分享 ...

  7. window与linux环境下,java调用c语言的方法

    windows环境下,java调用c语言的方法 1.环境 C语言编译器:工具比较多,本文使用的是gcc,带gcc的软件业比较丰富,我使用的是TDM-GCC, 注:网上很多使用的是MinGW,但我遇到了 ...

  8. Java调用R脚本的方法总结

    0 前言 R是一种非常方便易用的绘图.统计分析.ML算法设计方面的脚本语言.实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型, ...

  9. java调用c dll,指针参数和结构体参数搞定

    基于上两篇java调用dll的文章,我做了更为复杂的参数传递,指针变量和结构体变量,下面给出源码 vc++中的工程名称是SMSXIAO Source Files(源文件):.c文件名:sms.c 源码 ...

最新文章

  1. 【转载】在对话框中加入属性页
  2. codeblocks c++ 编译出错
  3. 开发时对业务技术框架的理解
  4. Vue 2017 现状与展望 | 视频+PPT+速记快速回顾
  5. Metro风格的Java组合框(JMetro)–重新介绍
  6. 豆瓣评分 9.4 的编程巨著!《算法》
  7. Flutter中ListView加载图片数据的优化
  8. Linux下如何发现内存泄漏问题(测试角度)
  9. Windows下JetBrains CLion的pthread使用配置
  10. springBoot+Mybatis注解大全
  11. MyBatis-3.4.2-源码分析12:XML解析之mapperElement(root.evalNode(mappers))
  12. 【Knowledge Fragment】
  13. sccm数据库远程服务器,SCCM 2007 R2部署之连接远程SQL Server模式
  14. Mac下的Kali虚拟机的安装
  15. Springboot与手机的互动
  16. 【Cxinny】数据结构与算法
  17. WAPI产业联盟:中国两项近场通信NFC安全技术成国际标准
  18. subline修改html模板,sublime Text 3 emmet自定义HTML模板的方法
  19. 官僚、傲慢、冷漠的腾讯开放平台
  20. Linux终端设备解析

热门文章

  1. 为什么销售员贷款比较难?
  2. 收入和贷款有什么关系?
  3. 程序员们请别做下一个小贝
  4. 金叉成功率_技巧!三分钟教会你识别macd真假金叉,让你精准把握买卖点!
  5. python代码书写_Python代码的优雅写法,让代码更简洁
  6. 惠普图形计算机游戏,惠普发布Victus by HP 16 - 一款适合PC游戏新人的游戏笔记本...
  7. java贪吃蛇_如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏
  8. 算法实践--最小生成树(Kruskal算法)
  9. 内嵌Tomcat的Connector对象的静态代码块
  10. 解决 用户'sa'登录失败。错误:18456 问题