C#开发COM组件

壹 、每种COM组件全体对外发表的法子都不能够不透过接口情势达成;

② 、由于.Net下编写翻译的COM组件并同样C编写翻译的COM组件,所以存在必须在运营目的机器注册的情状,对此.Net下编写翻译的COM组件必须为顺序开展签订契约,即强命名密钥;

 

步骤:

① 、 新建3个类库项目(文件—新建—项目—类库【命名:HK.NetPB德姆o】)

② 、针对“注意第①点供给”,新建1个接口文件(项目右键—添加—新建项—接口【命名:IHK.cs】)

叁 、 IHK.cs接口文件编码:

int TestFunction(int num, string str1, string str2, double db);

四 、 将Class1.cs 更名为:HKTest.cs
(这步其实很啰嗦,可是文书档案都收拾了,就像是此写吗)

提醒框点击“是”,如下图

图片 1

五 、 HKTest.cs 类文件编码:

累加名称空间:using System.Runtime.InteropServices;

达成接口、并在类头添加属性:[ClassInterface(ClassInterfaceType.None)]。如下图

图片 2

六 、 在“消除方案能源管理器”中找到节点“Properties”打开AssemblyInfo.cs文件

如下图

图片 3

7、 将[assembly: ComVisible(false)]质量改成[assembly:
ComVisible(true)]

如下图

图片 4

八 、 项目右键—属性、或许双击“Properties”节点,进入到品种性质设置界面

  8.壹 、选拔“应用程序”选项卡,点击“程序集消息”按钮,如下图

图片 5

8.② 、勾选“使程序集COM可知”,显著。如下图

图片 6

8.叁 、选取“生成”选项卡,在底部“输出”栏目下,勾选“为COM互操作注册”。如下图

图片 7

8.4、选择“签名”选项卡。

  8.4.壹 、勾选“为顺序集签名”;

  8.4.② 、在“接纳强名称密钥文件”的下拉框选拔“<新建…>”

  8.4.叁 、在“密钥文件名称”输入:HK.NetPB德姆o.snk(任意命名,snk后缀即可)

  8.4.④ 、去掉“使用密码珍爱密钥文件”,明确。

  【8.4.3、8.4.4】如下图

图片 8

 

玖 、 编写翻译项目。

10、 打开vs指令窗,如下图

图片 9

 

1一 、 运转指令:

gacutil /i DLL路径\HK.NetPB德姆o.dll 将以此DLL加入的大局缓存里

regasm DLL路径\HK.NetPB德姆o.dll 注册那一个dll

如下图

图片 10

附:以上13个步骤即可形成COM组件在本机的条件下报了名并提供调用。

1、若要在其它机器使用必须把编写翻译的“DLL”、“TLB”文件一并复制在指标机器(已安装.Net
Framework环境)并雄居需调用的顺序根目录;

贰 、在指标机器“c:\WINDOWS\Microsoft.Net\Framework\v4.0.3.319”下找到“RegAsm.exe”,该路线是自家的安装路径,借使没有就寻找下“RegAsm.exe”那个东东啊。【作者的条件:虚拟机、系统WindowsXP、.Net
Framework 4.0】

3、运转CMD打开指令窗,讲路径定位到“c:\WINDOWS\Microsoft.Net\Framework\v4.0.3.319”,

运作指令:re瓦斯m.exe DLL路径\ HK.NetPB德姆o.dll。 如下图【注册成功】

 

图片 11

二、DELPHI调用

1、 打开Delphi7,File—Close All

贰 、 Project—Import Type
Library,点击“Add”按钮选中刚才编译后的“tlb”COM文件【HK.NetPBDemo.tlb】点击“Create
Unit”如下图

图片 12

③ 、 Project—Import Type
Library,在列表中选中刚才添加的零件,点击“Install..”按钮。

如下图

图片 13

4、File—New—Application,添加一个button按钮,然后在“ActiveX”选项卡选择刚才添加的组件,添加至项目。如下图

 

图片 14

五 、 Delphi 关键代码

图片 15

相关文章