用C#生成.dll 供VB6的开发人员调用

2 篇文章 0 订阅

目录

用C#生成.dll 供VB6的开发人员调用

C#生成基于COM的DLL供VB调用


用C#生成.dll 供VB6的开发人员调用

里面有两个方法   
Encrypt(string pToEncrypt,string sKey) //加密    
Decrypt(string pToDecrypt,string sKey) //解密    

然后你这样写代码:    
using System;    
using System.Runtime.InteropServices;    
namespace 名称空间    
{    
     // 首先建立接口,这个是Com必须使用的    
     [Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]    
     public interface IEncrypt    
     {    
          string Encrypt(string pToEncrypt,string sKey);    
          string Decrypt(string pToDecrypt,string sKey);    
     }    
         
     // 写接口的实现    
     [Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]    
     public class 类名称 : IEncrypt    
     {    
          public string Encrypt(string pToEncrypt,string sKey)    
          {    
                // 复制FAQ加密代码    
          }    
           
          public string Decrypt(string pToDecrypt,string sKey)    
          {    
                // 复制FAQ解密代码    
          }    
     }    
}    

然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll    
然后用如下工具    
regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb    
这个.tlb文件就是类型库,可以由vb6和vc++6引用。    

注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的。    
还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用    
1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加。    


步骤    
一 生成.net程序集:    
首先你把http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35935的代码复制。    
然后你复制这个代码    
using System;    
using System.IO;    
using System.Text;    
using System.Runtime.InteropServices;    
using  System.Security.Cryptography;     
namespace Csic    
{    
     // 首先建立接口,这个是Com必须使用的    
     [Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]    
     public interface IEncrypt    
     {    
          string Encrypt(string pToEncrypt,string sKey);    
          string Decrypt(string pToDecrypt,string sKey);    
     }    
         
     // 写接口的实现    
     [Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]    
     public class Crypt : IEncrypt    
     {    
          public string Encrypt(string pToEncrypt,string sKey)    
          {    
                // 复制FAQ加密代码    
           }    
           
          public string Decrypt(string pToDecrypt,string sKey)    
          {    
                // 复制FAQ解密代码    
           }    
     }    
}    

把上面的文件保存成vs.net项目的一个类库工程。    
然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符    
在命令行内打下    
cd c:/ <回车>    
sn -k myKey.snk<回车>    
就在C盘根目录下生成一个名叫myKey.snk的强名称文件,然后关闭提示符窗口。    
在vs.net的那个类库工程自动生成的AssemblyInfo.cs文件内把    
[assembly: AssemblyKeyFile("")]    
改成    
[assembly: AssemblyKeyFile(@"C:/myKey.snk")]    
把[assembly: AssemblyVersion("1.0.*")]    
改成    
[assembly: AssemblyVersion("1.0.0.0")] // 注意:这时你的Com组件版本为1.0.0.0版    

然后按Shift + Ctrl + B键生成dll库(使用Release模式),假设是Csic.Crypt.dll。    
这时候,程序集就建立成功了。    

二、注册该程序集并创建一个类型库    
仍然使用开始菜单中的Vistual Studio .Net命令提示符    
进入你的项目目录,假设为D:/myProject/bin/Release    
在对话框中输入    
d:<回车>    
cd myproject/bin/release<回车>    
然后输入 dir 命令可以看见Csic.Crypt.dll文件    
然后输入:regasm /tlb Csic.Crypt.tlb Csic.Crypt.dll<回车>    
然后就在这个目录下生成了Csic.Crypt.tlb类型库文件。不要关闭此提示符窗口。    
这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件。    

这个regasm 实用程序将创建一个类型库并在 Windows 注册表中对其进行注册,以使 PhysServer2.dll 中的类对 COM 客户端可用 。    

三、 将程序集添加到全局程序集缓存中    

进入提示符窗口,输入    
gacutil /I Csic.Crypt.dll<回车>    
这时,你的这个dll就被复制到全局程序集缓存中了。也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了。    

四、使用方法    
asp内的使用方法    
set obj = Server.CreateObject("Csic.Crypt")    
dim str1    
str1 = obj.Encrypt("要加密内容","密码") // 加密    
dim str2    
str2 = obj.Decrypt("要解密内容","密码") // 解密

转自:https://blog.csdn.net/xiaoxiaohai123/article/details/1946237


C#生成基于COM的DLL供VB调用

用Visual C#生成的DLL文件已经和以前的DLL文件有了本质上的区别。VisualC、Delphi或者VB等编程语言来编写的DLL文件,在编译完成以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文件。但用Visual C#编译器生成的受托管代码虽然也是二进制文件,但不是可以直接供计算机使用的原始代码,实质上是一种中间语言(IL)代码,需要经过NGWS (Next

Generation Windows Services) runtime的即时编译器(即JIT)进行编译。

一、 新建项目

打开 VisualStudio2008 ,新建一项目,取名CSharpCOMDemo,项目类型【Visual C#】-【类库】

新建一个类取名为ClassMath,输入如下代码

注意类上的属性,对com可见和生成com类型。

using System.Runtime.InteropServices;  
  
namespace CSharpCOMDemo  
{  
    [ComVisible(true)]  
    [ClassInterface(ClassInterfaceType.AutoDual)]   
    public class ClassMath  
    {  
        public ClassMath()  
        {  
        }    
        public int lmSub(int a,int b)  
        {  
            return a - b;  
        }  
               
        public int lmAdd(int a, int b)  
        {  
            return a + b;  
        }  
    }  
}

二 、生成项目
修改项目属性,使项目生成的同时生成 tlb类型库

右键点击项目-【属性】-【生成】-【为COM互操作注册】前打勾

这里也可点击【签名】为程序集签名。签名方法也比较简单

操作方法:【签名】-【为程序集签名】打勾,选择密钥文件即可。如果没有密钥文件,这里也可方便地新建一个密钥文件。

本例不作签名。

三、 注册类型库

    输入regasm CSharpCOMDemo.dll /tlb: CSharpCOMDemo.tlb /codebase,将类型库导入到注册表。提示成功注册了类型,说明操作成功,此时TestCom .dll可以作为一个com来使用。
四 、添加dll到GAC(全局程序集缓存 )
    输入gacutil /i CSharpCOMDemo.dll,将此.net程序集添加到GAC。将程序集添加到GAC后以让系统管理员通过用户权限来控制Assembly的访问。本例也不做添加。

 转自:https://blog.csdn.net/mrliming/article/details/5432736

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ++编写的全面介绍。 opcdaauto.dll是一种使用C++编写的Windows DLL文件,它是OPC自动化核心组件库的一部分。 OPC自动化是指使用微软所定义的基于COM和DCOM的技术,通过程序化方式实现与OPC服务器进行通信的方法。 opcdaauto.dll为其它组件提了一些基础服务,以便它们可以通过DCOM连接到OPC服务器并获取数据。该DLL文件使得OPC自动化可以更容易地实现数据交换。 当使用opcdaauto.dll库时,C++程序员需要创建一个COM对象并使用现有的OPC服务器连接到其接口。使用该DLL文件,程序员可以直接访问OPC服务器和其数据点,而无需了解服务器和客户端之间的复杂交互过程。 在使用opcdaauto.dll时,C++程序员可以自由选择使用所需的版本,以及根据自身的应用程序需求,进行自定义修改和应用。使用opcdaauto.dll库,C++程序员可以获得高效可靠的通信,轻松实现数据交换,从而为其它应用程序提更灵活高效的数据获取手段。 总之,opcdaauto.dll作为OPC自动化核心组件库的一部分,是一个强大的DLL文件。使用C++编写的该DLL文件,可以在Windows操作系统上提高效的通信,为用户带来方便,同时也为C++程序员在应用程序中取得成功的基本服务。 ### 回答2: OPC自动化组件opcdaauto.dll是一种用于实现OPC自动化的动态链接库文件。它提了一组可开发人员调用和使用的功能接口,以帮助他们开发和实现OPC自动化应用程序。 OPC DA是"数据访问"标准,其允许应用程序从数据源中读取或写入数据。 OPC DA自动化维护了一些标准接口,可以让应用程序直接调用和使用器COM对象。调用这些接口的最常用方法是使用opcdaauto.dll。 使用opcdaauto.dll开发人员可以编写各种支持数据访问或数据源和一些常规操作的应用程序。一些应用程序例子包括工业实时控制,监测和其他领域的数据采集和处理。opcdaauto.dll还支持多线程操作和多个客户端同时使用数据源,可以使得许多不同的客户端同时访问数据源。 对于开发人员而言,使用opcdaauto.dll是相对容易的,因为它提了简便的COM接口。开发人员需要了解如何通过COM接口与OPC DA自动化器进行交互以及如何实现相应的回调方法。对于新手开发者,OPC DA CAB告诉用户如何实现opcdaauto.dll的用户控件,例如可以通过VB脚本或其他编程语言使用。同时,可以找到很多完整的例子,使用它们可以熟悉opcdaauto.dll的基本使用方法。 ### 回答3: OPC(OLE for Process Control)是一种用于工业自动化的标准通信协议。OPC DA(Data Access)是OPC的一种子协议,用于实时数据的读取和写入。opcdaauto.dll是一个OPC DA自动化客户端库,可用于连接到OPC服务器并读取数据。 使用C++编程语言可以调用opcdaauto.dll库中的函数来实现与OPC服务器的通信。首先,需要加载opcdaauto.dll库,然后使用CoInitialize函数初始化COMComponent Object Model)运行时库,以便调用COM接口。接下来,使用CLSIDFromProgID函数获取OPC服务器的CLSID(Class ID),并使用CoCreateInstance函数创建一个与OPC服务器的连接。通过IOPCServer接口,可以查询OPC服务器上的所有标签(Items),并使用IOPCSyncIO接口同步读取或写入标签的值。读取或写入完成后,需要使用CoUninitialize函数关闭COM运行时库并释放与OPC服务器的连接。 除了opcdaauto.dll库,还有许多其他的OPC DA客户端库可选择,例如opcdaclient.dll、QT OpcUa Client SDK等。选择哪一种库取决于具体应用的需求和开发人员的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值