麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

java 調(diào)用.net DLL的方法

2023-06-10 12:43:01
字體:
供稿:網(wǎng)友

背景:

近日一個(gè)java的項(xiàng)目,客戶要求項(xiàng)目中必須使用其提供的加密機(jī)制,扔給了兩個(gè).net寫的DLL。網(wǎng)絡(luò)上搜了一圈也沒找到啥東西,甚至看到人揚(yáng)言此事絕無可能。郁悶當(dāng)中考慮了一個(gè)思路。用C#做一個(gè)Com,調(diào)用客戶提供的DLL實(shí)現(xiàn)加密解密的方法,然后提供給java使用。經(jīng)過一番搗騰,最后證實(shí)可行。

環(huán)境與工具:

1、.net framework 3.5 C#

2、java jdk1.5, Tomcat 5.5

3、jacob-1.15-M3

實(shí)現(xiàn)例子:

一、C# 制作Com組件

新建一個(gè)Class 項(xiàng)目,取名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 "測(cè)試 | "+str+"|"+str2;
                  }
         }
}

打開 Project--> Properties菜單 在Application標(biāo)簽中打開 Assembly Information 將Make assembly Com-Visible一項(xiàng)選中。再切換到Build標(biāo)簽將 Register for COM interop一項(xiàng)選中。

Guid的生成:打開Visual Studio Command Prompt 輸入guidgen ming令調(diào)出工具。類型選擇Registry Format,點(diǎn)擊New Guid,然后COPY出來。

[DispId(1)]為函數(shù)的標(biāo)識(shí)。如果有多個(gè)函數(shù)可相應(yīng)的在函數(shù)前面加[DispId(2)], [DispId(3)]…

編譯程序Debug目錄中會(huì)生成 TestCom.dll 和TestCom.tlb

手工注冊(cè)Com方法:

打開Visual Studio Command Prompt進(jìn)入Debug目錄,運(yùn)行ming令注冊(cè):regasm TestCom.DLL /tlb:TestCom.tlb

二、java 調(diào)用 Com

部署jacob

1、在開發(fā)環(huán)境中引入jacob.jar

2、拷貝jacob-1.15-M3-x86.dll 文件到 C:/Windows/System32目錄,如果是Web應(yīng)用的話還需要拷貝到j(luò)dk1.5.0_16/bin目錄(jdk安裝目錄下的bin目錄)

java調(diào)用代碼

代碼

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","哥是第一個(gè)參數(shù)","哥是第二個(gè)參數(shù)");
                           String str = var.toString(); //返回值
                  } catch (Exception ex) {
                           ex.printStackTrace();
                  }
         }

}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 午夜精品久久久久久中宇 | 亚洲免费视频大全 | 精品国产一区二区三区久久久狼牙 | 国产精品视频二区不卡 | 伊人成人免费视频 | 撅高 自己扒开 调教 | 黄色大片网站在线观看 | 万圣街在线观看免费完整版 | 日本精品中文字幕 | 中文字幕在线播放一区 | 黄色网址入口 | 今井夏帆av一区二区 | 99视频有精品视频高清 | 色天天综合网 | 全黄裸片武则天一级第4季 偿还电影免费看 | 最近中文字幕一区二区 | 中文字幕一区2区 | 亚洲一区二区在线视频 | 免费一级欧美在线观看视频 | 免费视频一区 | 在线高清中文字幕 | 黄视频免费在线观看 | 高清av免费 | 亚洲精品动漫在线观看 | 欧美一级成人 | 中国fx性欧美xxxx | 免费a级毛片大学生免费观看 | 亚洲码无人客一区二区三区 | 精品一区二区在线观看 | 成人精品久久久 | 主人在调教室性调教女仆游戏 | 日韩午夜一区二区三区 | 国产亚洲精品视频中文字幕 | 19禁国产精品福利视频 | 中文字幕欧美在线 | 欧美黄色试片 | chinese军人gay呻吟 | 妇子乱av一区二区三区 | 黄色网址进入 | 久久青草影院 | 免费毛片在线视频 |