返回顶部
首页 > 资讯 > 精选 >如何用C#做中间语言实现Java调用.net DLL
  • 429
分享到

如何用C#做中间语言实现Java调用.net DLL

2023-06-17 15:06:41 429人浏览 薄情痞子
摘要

如何用C#做中间语言实现Java调用.net DLL,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。51CTO曾经为大家讲过“Java与.NET的WEBServices相互调

如何用C#做中间语言实现Java调用.net DLL,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

51CTO曾经为大家讲过“Java与.NET的WEBServices相互调用”,但是如何实现Java调用.net DLL的方法呢?我们在网上搜索了一番,也没找到啥东西,甚至看到人扬言此事绝无可能。本文将详细为大家介绍一个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 {             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的方法!

关于如何用C#做中间语言实现Java调用.net DLL问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 如何用C#做中间语言实现Java调用.net DLL

本文链接: https://lsjlt.com/news/290118.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用C#做中间语言实现Java调用.net DLL
    如何用C#做中间语言实现Java调用.net DLL,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。51CTO曾经为大家讲过“Java与.NET的WebServices相互调...
    99+
    2023-06-17
  • c语言如何调用python
    从 c 语言调用 python 代码有两种方式:直接嵌入 python 解释器或使用 python c 扩展库。前者通过 py_initialize() 初始化解释器、pyrun_sim...
    99+
    2024-05-22
    python c语言
  • 如何调用c语言函数
    如何调用c语言函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式...
    99+
    2023-06-15
  • c语言如何调用函数
    C语言中可以通过函数名和参数列表来调用函数。例如,假设有一个名为`add`的函数,接受两个整数作为参数,并返回它们的和。调用函数的一...
    99+
    2023-09-04
    c语言
  • c语言如何调用队列
    c语言中创建和操作队列:使用queue_create()创建一个队列。使用queue_enqueue()将元素添加到队列末尾。使用queue_dequeue()从队列头部移除元素。使用q...
    99+
    2024-05-22
    c语言 标准库
  • 如何在Java中调用DLL:详细图解
    如何在Java中调用DLL:详细图解 在Java开发中,有时候需要与动态链接库(DLL)进行交互,以实现更高级的功能。本文将详细介绍如何使用Java调用DLL,并提供相应的代码和描述。 第一步:准备D...
    99+
    2023-10-22
    java 开发语言 Java
  • C语言与C++项目实现相互调用
    目录前言一、C++项目调用C的静态库二、C项目调用C++的静态库三、总结前言 extern “c”的作用可以实现c语言和c++相互调用。 1.当我们写c语言代...
    99+
    2024-04-02
  • c语言swap函数如何调用
    在C语言中,可以使用以下两种方式调用swap函数: 通过传递变量的地址进行调用: void swap(int *a, int *...
    99+
    2024-02-29
    c语言
  • Java和C语言如何使用静态语言实现动态数组
    这篇文章将为大家详细讲解有关Java和C语言如何使用静态语言实现动态数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JAVA版JAVA自带了一个集合类ArrayList,可以实现动态数组的功能,相比原生...
    99+
    2023-05-31
    java c语言
  • C语言中程序如何调用Python脚本
    目录一、环境配置0x00 平台0x01 添加 包含目录 和 库目录0x02 添加依赖项二、案例三、常用API有时候在写C语言程序的时候又想利用一下pyt...
    99+
    2024-04-02
  • go语言如何实现数组的调用
    Go语言中可以使用索引来调用数组中的元素。索引从0开始,依次递增。以下是一个示例代码:```gopackage mainimport...
    99+
    2023-10-12
    Go语言
  • 怎么用C语言实现任务调度
    这篇文章主要介绍“怎么用C语言实现任务调度”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用C语言实现任务调度”文章能帮助大家解决问题。任务调度模式结构整体上的结构属于线性结构,结合链表和定时器来...
    99+
    2023-07-05
  • 如何用C语言实现圣诞树
    这篇文章主要介绍“如何用C语言实现圣诞树”,在日常操作中,相信很多人在如何用C语言实现圣诞树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用C语言实现圣诞树”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-22
  • c语言如何处理函数调用
    这篇文章将为大家详细讲解有关c语言如何处理函数调用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 要编译的测试代码:int plus(int x, int y)...
    99+
    2023-06-21
  • c语言函数如何调用数组
    在C语言中,可以通过传递数组的指针来调用数组,并使用下标运算符([])来访问数组的元素。以下是一个示例:c#include // 定...
    99+
    2023-10-18
    c语言
  • C#中如何实现异步调用
    C#中如何实现异步调用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。.NET Framework 允许您C#异步调用任何方法。定义与您需要调用的方法具有相同签名...
    99+
    2023-06-17
  • C语言中如何实现加法
    本文小编为大家详细介绍“C语言中如何实现加法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中如何实现加法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。先动手编写程序:#include <s...
    99+
    2023-06-17
  • C语言中如何实现判断
    本篇内容主要讲解“C语言中如何实现判断”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中如何实现判断”吧!(一)先动手编写一个程序:#include <stdio.h>...
    99+
    2023-06-17
  • C语言中如何实现协程
    这篇文章主要为大家展示了“C语言中如何实现协程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言中如何实现协程”这篇文章吧。协程是一种用户空间的非抢占式线程,主要用来解决等待大量的IO操作的问...
    99+
    2023-06-20
  • golang调用c语言动态库方式实现
    下面我们自己在 Linux 下做一个动态库(.so 文件 - Shared Object),然在用 Go 来使用它。本文所用的操作系统为 Ubuntu18.04, 以 gcc 作为编...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作