Dav*_*Caz 0 c# vb6 com visual-studio
在Visual Studio 2015中,如果我创建一个"类库"C#项目,然后添加对自定义COM DLL(使用VB6创建)的引用,VS将自动添加所有(?)VB6 DLL依赖的COM引用.
它是如何做到的?它如何静态地弄清楚那些引用是什么?
注意 - 我们的VB6 DLL使用"早期绑定",但即使仍然没有像传统的"C"样式DLL中那样的COM项目的导入表.
您实际上是在添加对类型库的引用.它作为资源嵌入在DLL中.使用File> Open> File时,可以看到它,选择DLL,打开TYPELIB节点.它与.NET程序集中的元数据起着完全相同的作用,列出了公开的接口和类的类型定义.它具有二进制格式,您可以使用OleView.exe实用程序对其进行反编译.
并且还有依赖项信息,注册表有助于找到这样的依赖类型库(HKLM\Software\Wow6432Node\Classes\Typelib键).与GAC在.NET中扮演的角色大致相同.COM并不像.NET那样与每个人都假设不同:) CLR的第一个版本是由Microsoft的COM +组创建的.消除与COM相关的注册和DLL地狱问题是todo列表的顶部.
类型库并不完全是遗产,它们仍然在全新的WinRT(又名UWP,又名现代UI)中扮演关键角色.这是基于COM的核心,非常隐蔽.但由于限制,旧格式已退役,取而代之的是.winmd格式.这与.NET元数据格式完全相同.任何.NET反编译器都可以显示其内容.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |