C#编写dll, VB6.0调用

news/2025/1/11 23:43:22/

 本周有个任务,实现一个数据上传接口,要求是VB6.0实现。

麻烦的是数据需要DES加密,网上没找到现成的DES VB6实现,于是加密的部分用C#实现,VB6代码调用,折腾一番,参考网上的教程,记录如下:

C#编写dll

1. 新建Class Library项目

 2. 编写接口和继承

必须用接口,否则VB无法调用。

接口和类都要赋值GUID

[Guid("A8FE854A-B421-46F7-9711-DDC63417C6D3")]
public interface ICrypto
{string EncryptData(string data, string key);
}[Guid("8C4610BF-B6EA-445D-8B9E-53CF54460A82")]
public class Crypto : ICrypto
{public string EncryptData(string data, string key){//...}//... 
}

 

 3.生成强名称key

打开VS命令行工具:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat

#Key的名字自定义
sn -k C:\MyKey.snk 

项目 > Properties > Signing, 选择生成的强名称Key文件

 

 4. 设置Assembly信息

项目 > Properties > Application > Assembly Information, 勾选“Make assembly COM-Visible”

项目 > Properties > Build,  Configuration选择“Release”, 勾选“Register for COM interop”

 

5. 检查AssemblyInfo.cs文件

确保ComVisible为true, Assembly版本有具体的值

6. Build项目,生成DLL文件

 至此,DLL部分的工作完成。

为什么需要有以上这些有点繁琐的步骤呢?接口,GUID,强名称key这些。后来查了一下,原来就是为了要支持COM而进行的一些config。

目标机上注册dll

开发机上,VS已经自动把dll注册过了。但是目标机上需要单独注册。

.NET的dll,需要用.NET Framwork中的RegAsm.exe来注册。

先确保目标机上安装了.NET Framework。

C:\Windows\Microsoft.NET\Framework\v4.0.30319>RegAsm.exe /codebase C:\Encrypt.dll

 

VB调用dll

Private Declare Function func Lib "C:\Encrypt.dll" () As StringSet CryptoObj = CreateObject("Encrypt.Crypto")
data = CryptoObj.EncryptData(data, key)

参考:https://www.cnblogs.com/bob79/archive/2012/11/06/2757263.html


http://www.ppmy.cn/news/665205.html

相关文章

FPGA第一个程序入门

1、使用正点原子的达芬奇开发板进行第一个FPGA程序设计。 2、启动vivado 2019.2。 3、 新建工程。 File--Project--New,选择RTL Project(寄存器传输级)。 4、选择器件。 add sources点击next, add constraints点击next&#x…

什么叫网络传真系统

一、概述 网络传真系统是指提供多条传真线路、支持多用户同时收发传真所使用的一套传真服务器系统。 传真服务器系统是安装在局域网内的计算机服务器中的传真应用软件,安装该软件的计算机服务器需配置有传真调制解调器或传真卡与电话线路连接,通过该传…

大数据基础知识:什么是集群?

什么是集群? 集群是一组相互独立的、通过高速计算机网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。 计算机集群简称集群是一种计算机系统, 它…

第四代计算机主要特征是什么,第四代计算机网络特点是什么?

无线网特别是无线局域网有很多优点,如易于安装和使用。但无线局域网也有许多不足之处:如它的数据传输率一般比较低,远低于有线局域网;另外无线局域网的误码率也比较高,而且站点之间相互干扰比较厉害。 用户无线网的实现…

什么是AD转换

ARM体系-ADC 一、什么是ADC 1、ADC:analog digital converter,AD转换,模数转换(也就是模拟转数字) 2、模拟信号只有通过A/D转化为数字信号后才能用软件进行处理,这一切都是通过A/D转换器(ADC&…

打印机显示键入传真服务器位置,打印机在打印时,出现 选择传真调制解调器或服务器,是怎么回事?...

你的打印机列表中只有FAX 1、这个是由于你的打印机中有系统自带的传真软件虚拟打印机FAX 2、传真软件并没有进行配置调制解调器,且FAX成为默认打印机,所以你每次打印都会自动选择了FAX 3、你的打印机列表中只有FAX。 4、请检查你的打印机列表&#xff0c…

传真休眠怎么取消_怎么可以把传真休眠状态调成正常使用状?

2005-04-09 XP系统待机和休眠之后如何启动 待机和休眠是两码事!待机状态通常情况下只要晃一下鼠标便能使机器脱离待机,恢复到先前的工作状态。 而休眠是保存当前的工作状态,然后自动关闭电源。想再次使用的时候,需按电源开…

163邮箱有传真服务器,网易企业邮箱邮件传真功能使用说明

网易企业邮箱邮件传真功能是网易在用户购买网易企业邮箱时附赠的增值服务,管理员通过在企业邮箱管理后台给员工邮箱设置邮件传真号码,员工便可在WebMail直接收发电子传真,无需通过传真机。此功能需要联系经销商协助开通。 一、管理员端如何开…