C#编写dll, VB6.0调用

news2024/11/17 16:17:50

 本周有个任务,实现一个数据上传接口,要求是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 String

Set CryptoObj = CreateObject("Encrypt.Crypto")
data = CryptoObj.EncryptData(data, key)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab训练分类网络以对3D点云中的对象进行分类(附源码)

一、前言 示例介绍了中概述的方法,其中点云数据被预处理为体素化编码,然后直接与简单的 3-D 卷积神经网络架构一起使用以执行对象分类。在最近的方法中,点云数据的编码可能更加复杂,并且可以与执行分类/对象检测/分割任务的网络一…

07-图5 Saving James Bond - Hard Version

题目: This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with…

golang cannot find package xxx in any of

目录结构如下 报错 cannot find package xxx in any of 1是路径没配对,把src去掉,因为GOPATH的规则好像是自动识别目录下的src路径,所以改成下面即可 2是别勾这个 否则会如下报错 含义参考 Enable Go modules integration在做什么 - 知乎 gol…

video-08-videojs黑屏问题(详解总结)

博主在开发的时候遇到这种情况,video黑屏问题,问题有两种情况,一种是视频黑屏且不可以播放,另一种是视频黑屏且自己播放,事件可以监听到 目录 一、问题类型1 视频黑屏且不可以播放 1.1 原因 1.2 解决方案思路 1.3 代…

fast admin报错:Unexpected token ‘<‘, “ (已解决)

报错信息: 在新加视图的时候的,点击编辑/添加忽然报这个错误,网上找了半天,js、视图、修修改改最后竟是一个小问题; 解决方法: 改为: 简单的说就是:btn-ajax ->btn-dialog

C# 二叉树的后序遍历

145 二叉树的后序遍历 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root [] 输出:[] 示例 3: 输入…

php未定义索引数组怎么解决

在PHP中,如果使用一个未定义的数组索引,就会出现未定义索引错误。在这种情况下,需要采取措施解决这个问题。本文将为您介绍几种解决php未定义索引数组的方法。 1.使用isset()函数检查数组索引是否存在 使用函数isset()可以检查一个变量是否…

A股股民调查:58%股民表示“亏惨了”

A股上半年赚钱效应究竟如何? 东方财富网的一份调查显示,有58%的股民表示今年上半年亏惨了,另有9%的股民略有浮亏。 成交“先冷后热”、基金发行遇冷 A股的上半年已正式收官!A股三大指数上半年涨跌不一,其中沪指累涨…

希尔排序(C语言)

希尔排序 一、希尔排序的原理二、动图演示三、代码实现四、实现从小到大排序五、希尔排序的优缺点 一、希尔排序的原理 希尔排序是插入排序的一种更高效的改进版本。 1.将原始待排数据按照设定的增量gap分成多组,每组有n / gap个元素。 2.对这些分组进行插入排序&a…

Linux 学习记录43(C++篇)

Linux 学习记录43(C篇) 本文目录 Linux 学习记录43(C篇)一、友元1. 友元函数(1. 全局函数作为友元函数(2. 类中的成员函数作为友元 2. 友元类3. 友元的注意事项 二、常成员函数和常对象(const)1.常成员函数2. 常对象3. mutable 关键字 三、运算符重载1. 常见的运算符2. 运算符重…

【海思SS528 | MPP】音频例程 sample_audio.c 源码阅读笔记

目录 一、概述二、main 函数解析三、main_inner 函数解析四、sample_audio_ai_ao 函数解析4.1 Audio Codec相关配置 五 一、概述 上篇文章 【海思SS528】MPP媒体处理软件V5.0 | 音频模块 - 学习笔记 学习了海思MPP媒体处理平台的一小部分音频知识,这篇文章继续学习与…

(5)深度学习学习笔记-多层感知机

文章目录 多层感知机和激活函数代码来源 多层感知机和激活函数 通过在网络中加入一个或多个隐藏层来克服线性模型的限制,使其能处理更普遍的函数关系类型。最简单的方法是将多个全连接层堆叠在一起。每一层都输出到上面的层,直到生成最后的输出&#xf…

Android12之ServiceManager::addService添加服务的本质(一百五十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Python-创建虚拟环境并指定环境目录

1.简介 程序运行依赖于环境,不同程序依赖的环境不尽相同。如果一个项目依赖于一个第三方库的1.0版本,另一个项目依赖于这个第三方库的2.0版本,在一个python环境中一个库只能同时存在一个版本,所以就产生了版本冲突。虚拟环境就是为…

git 显示不出图标

今天写完代码准备上传 gitee 的时候发现,自己的本地文件夹没有小绿勾了,整的我一时分不清到底哪些文件已经上传过。 研究了半天终于搞定了,现在把方法记录下来,防止以后继续出现这种问题还要找半天。 1. 打开注册表 win R 打开运…

【Python 随练】按键变色

题目: Press any key to change color, do you want to try it. Please hurry up! 简介: 在本篇博客中,我们将解决一个编程问题:按下任意键改变颜色。我们将提供一个完整的代码示例来实现这个功能,并鼓励读者尝试。…

亚马逊云科技自研芯片,为企业云服务提高性价比

6月27日至28日,2023亚马逊云科技中国峰会于上海顺利召开。在本次峰会上,似乎找寻到了云计算领域竞争对手均日渐成熟,而亚马逊云科技却能一直保持领先地位的原因——过去的十几年里,亚马逊云科技“基于客户需求,快速进行…

gnutls_handshake() failed: The TLS connection was non-properly terminated.

从远程仓库获取所有更新,并保存在本地时,使用git fetch 命令时出现如下错误: 解决办法: 问题解决: 参考资料 拉取github报错 gnutls_handshake() failed: The TLS connection was non-properly terminated. git获取…

proteus三级管(NPN)仿真LED灯串的开关

实验里设置LED灯的导通电压为1.2V 打开仿真开关后可以看到,此时三极管不导通,LED灯亮了,并且电压表和电流探针有数值显示 按下按键,三级管导通,LED灯灭

Spring MVC相关注解运用 —— 上篇

目录 一、Controller、RequestMapping 1.1 示例程序 1.2 测试结果 二、RequestParam 2.1 示例程序 2.2 测试结果 三、RequestHeader、CookieValue 3.1 示例程序 3.2 测试结果 四、SessionAttributes 4.1 示例程序 4.2 测试结果 五、ModelAttribute 5.1 示例程序 …