新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用.NET2.0 編寫COM組件供Visual Basic調(diào)用

使用.NET2.0 編寫COM組件供Visual Basic調(diào)用

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

1.定義接口

本文引用地址:http://m.butianyuan.cn/article/201609/303764.htm

Com是通過(guò)拋出接口讓外部應(yīng)用調(diào)用的,每個(gè)接口、組件都有一個(gè)Guid,在.Net中開(kāi)發(fā)Com組件也不例外。

[Guid(“0bb13346-7e9d-4aba-9ff2-862e0105489a”)]

public interface IMyService

{

//定義接口方法或者屬性,每個(gè)方法或?qū)傩远加幸粋€(gè)DISPID屬性,供VBScript等使用

[DispId( 1 )]

void Method1( args … );

}

2.實(shí)現(xiàn)接口的派生類

//Guid屬性定義組件的Guid

//ProgID定義Com組件的ProgID

[Guid(

ba0a3019-f0d8-4406-8116-f80d5515c686 ) ,

ProgId(ClassNamespace.MyService),

ClassInterface(

ClassInterfaceType.None)]

public class

MyService : IMyService

{

…… //實(shí)現(xiàn)代碼部分

}

3.將.Net裝配件轉(zhuǎn)換為公有裝配件

(1)創(chuàng)建強(qiáng)名字

sn –k mykey.snk

并將強(qiáng)名字拷貝到工程目錄下面

在AssembyInfo.cs修改對(duì)應(yīng)的配置

[assembly: AssemblyKeyFile(“../../mykey.snk”)]

(2)導(dǎo)出類型庫(kù)

為了在VB中使用,必須使用tlbexp.exe導(dǎo)出Com類型庫(kù)。

tlbexp SisCalLib.dll /out:SisCalLib.tlb

(3注冊(cè)裝配件

RegAsm MyService.dll

(4)將裝配件加入GAC

gacutil -i MyService.dll

注意:該步驟不是必須的。

(5)在AssembyInfo.cs修改COM對(duì)外可見(jiàn)性配置

// 將 ComVisible 設(shè)置為 false 使此程序集中的類型

// 對(duì) COM 組件不可見(jiàn)。如果需要從 COM 訪問(wèn)此程序集中的類型,

// 則將該類型上的 ComVisible 屬性設(shè)置為 true。

[assembly: ComVisible(true)]

// 如果此項(xiàng)目向 COM 公開(kāi),則下列 GUID 用于類型庫(kù)的 ID

[assembly: Guid(e011ed16-93a3-41aa-8375-399fa259b935)]

經(jīng)過(guò)上面的工作,就將一個(gè).NET裝配件轉(zhuǎn)化為。

4.在VB中調(diào)用生成的(dll)

1)工程->引用

2)創(chuàng)建對(duì)象調(diào)用



關(guān)鍵詞: .NET2.0 COM組件 linux

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉