Com与.Net互操作

Tags: .net

一、.Net调用Com组件

.Net调用Com组件主要分为两类:静态调用及动态调用。

所谓静态调用:指通过通过tlbimp.exe命名产生Com组件在.Net环境下的包装类,然后通过这个包装类来访问Com组件。

所谓动态调用:是指不通过Com组件的包装类来进行Com组件调用,而是在远行时通过反射来进行Com组件调用。

下面将分别详细的讨论这两种实现方法:

<!--[if !supportLists]-->²       <!--[endif]-->静态调用

<!--[if !supportLists]-->1、  <!--[endif]-->编写Com组件MyComponent.dll

<!--[if !supportLists]-->2、  <!--[endif]-->产生可访问Com组件的包装类:

tlbimp /out:Interop.MyComponent.dll MyComponent.dll

<!--[if !supportLists]-->3、  <!--[endif]-->.Net代码中访问

只要在项目添加Com包装类,就可以像访问.Net的装配件一样访问Com组件。

 

当然上面的三个步骤也可以在VS中直接添加对Com组件的引用,让VS自动完成第二步。

注意:

<!--[if !supportLists]-->1、  <!--[endif]-->如果引用Com组件的.Net项目为结果为强命名组件,这个时候要求Com组件的包装类也必须为强命名组件,所以这个时候必须手动进行第二步操作,并且在产生包装类的时候设置snk文件名称,具体操作方法为:

tblimp /keyfile:filename.snk /out:Interop.MyComponent.dll MyComponent.dll

<!--[if !supportLists]-->2、  <!--[endif]-->要想有更多的设置请参考tlbimp的使用方法。

 

<!--[if !supportLists]-->²       <!--[endif]-->动态调用

<!--[if !supportLists]-->1、  <!--[endif]-->编写Com组件MyComponent.dll

<!--[if !supportLists]-->2、  <!--[endif]-->.Net程序中产生要被调用的Com

本文链接:http://www.4byte.cn/learning/87004.html