RegAsm.exe 和 regsvr32 有啥区别?如何使用 regsvr32 生成 tlb 文件?

Posted

技术标签:

【中文标题】RegAsm.exe 和 regsvr32 有啥区别?如何使用 regsvr32 生成 tlb 文件?【英文标题】:What is difference between RegAsm.exe and regsvr32? How to generate a tlb file using regsvr32?RegAsm.exe 和 regsvr32 有什么区别?如何使用 regsvr32 生成 tlb 文件? 【发布时间】:2010-11-12 21:44:33 【问题描述】:

谁能告诉我 regsvr32 和 RegAsm 有什么区别?我的 Dll 是用 C# 编写的,那么如何将类导入 c++?

【问题讨论】:

【参考方案1】:

regsvr32 将加载库并尝试从该库调用DllRegisterServer()。它不关心DllRegisterServer() 实际做了什么——它只是调用该函数并检查返回值。您可以使用它在非托管 DLL 中注册 COM 服务器。它无法生成 .tlb 文件。

regasm 会将 COM 公开的 .NET 程序集注册为 COM 服务器。您将它用于 .NET 程序集。它可以仅在给定程序集的情况下生成 .tlb 文件 - 它检查存储在程序集中的类型信息并将 COM 公开的实体包含到类型库中。

【讨论】:

@Aamir:当我第一次尝试制作暴露 COM 的程序集并从 VC++ 应用程序中使用它并使该应用程序可再分发时,我遇到了类似的问题。不同的是,***.com 是后来推出的。

以上是关于RegAsm.exe 和 regsvr32 有啥区别?如何使用 regsvr32 生成 tlb 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Inno 安装 RegAsm.exe 错误

DLL注册

如何在没有 RegAsm.exe 的情况下注册类型库

Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区

regasm 无法定位输入程序集

'RegAsm.exe' 不是内部或外部命令