类型库导入程序 (Tlbimp.exe)

NET Framework 工具 
类型库导入程序 (Tlbimp.exe) 

 

类型库导入程序将 COM 类型库中的类型定义转换为公共语言运行库程序集中的等效定义。Tlbimp.exe 的输出为二进制文件(程序集),该文件中包含在原始类型库中定义的类型的运行库元数据。可以使用诸如 Ildasm.exe 这样的工具检查此文件。

复制到剪贴板
tlbimp tlbFile [options]

 

参数
 
参数 说明

tlbFile

包含 COM 类型库的任意文件的名称。

 
选项 说明

/asmversion: versionNumber

指定要生成的程序集的版本号。以 major.minor.build.revision 格式指定 versionNumber

/delaysign

向 Tlbimp.exe 指定使用延迟签名以强名称对结果程序集进行签名。此选项必须与 /keycontainer:/keyfile:/publickey: 选项一起指定。有关延迟签名进程的更多信息,请参见延迟为程序集签名。

/help

显示该工具的命令语法和选项。

/keycontainer: containername

使用在 containername 指定的密钥容器中找到的公钥/私钥对,签发具有强名称的结果程序集。

/keyfile: filename

使用在 filename 中找到的发行者的正式公钥/私钥对,签发具有强名称的结果程序集。

/namespace: namespace

指定在其中生成程序集的命名空间。

/noclassmembers

防止 Tlbimp.exe 向类添加成员。这样可避免潜在的 TypeLoadException。

/nologo

取消显示 Microsoft 启动标题。

/out: filename

指定输出文件、程序集以及要写入元数据定义的命名空间的名称。如果类型库指定的接口定义语言 (IDL) 自定义属性显式控制该程序集的命名空间,则 /out 选项对程序集的命名空间没有影响。如果您没有指定此选项,则 Tlbimp.exe 将元数据写入与在输入文件内定义的实际类型库同名的文件中,并且为其分配 .dll 扩展名。如果输出文件的名称与输入文件的名称相同,则该工具将生成一个错误,以防止重写该类型库。

/primary

生成指定类型库的主 interop 程序集。相关信息将被添加到该程序集中,以指示类型库的发行者已生成该程序集。通过指定主 interop 程序集,您可以将一个发行者的程序集与使用 Tlbimp.exe 从该类型库创建的任何其他程序集区分开来。如果您是正使用 Tlbimp.exe 导入的类型库的发行者,则只应使用 /primary 选项。请注意,您必须签发具有强名称的主 interop 程序集。有关更多信息,请参见主互操作程序集。

/publickey: filename

指定包含用来签发结果程序集的公钥的文件。如果您指定了 /keyfile:/keycontainer: 选项而非 /publickey:,则 Tlbimp.exe 将根据由 /keyfile:/keycontainer: 提供的公钥/私钥对来生成公钥。publickey: 选项支持测试键和延迟签名方案。该文件采用由 Sn.exe 生成的格式。有关更多信息,请参见强名称工具 (Sn.exe) 中 Sn.exe 的 -p 选项。

/reference: filename

指定程序集文件,用以解析对在当前类型库外定义的类型的引用。如果您没有指定 /reference 选项,Tlbimp.exe 将自动以递归的方式导入任何被导入的类型库引用的外部类型库。如果您指定了 /reference 选项,那么在导入其他类型库之前,该工具将尝试解析被引用程序集中的外部类型。

/silent

取消显示成功消息。

/strictref

如果此工具不能解析当前程序集、/reference 选项指定的程序集或已注册的主互操作程序集 (PIA) 内的所有引用,则不要导入类型库。

/strictref:nopia

/strictref 相同,但忽略 PIA。

/sysarray

指定该工具将 COM 样式 SafeArray 作为托管 System.Array 类类型导入。

/tlbreference: filename

指定类型库文件,用于在不参考注册表的情况下解析类型库引用。

请注意,此选项不加载某些较早的类型库格式。但是,您仍可以通过注册表或当前目录隐式加载较早的类型库格式。

/transform: transformName

transformName 参数的指定转换元数据。

指定 dispret 作为 transformName 参数,可以将仅支持调度的接口(调度接口)的方法的 [out, retval] 参数转换为返回值。

有关此选项的更多信息,请参见本主题后面的示例。

/unsafe

在不进行 .NET Framework 安全检查的情况下生成接口。调用以此方式公开的方法可能会导致安全风险。如果您不了解公开此类代码的风险,则不应使用此选项。

/verbose

指定详细模式;显示有关导入的类型库的附加信息。

/?

显示该工具的命令语法和选项。

Note注意

Tlbimp.exe 的命令行选项不区分大小写,并可以按任何顺序提供。只需指定足够的选项来唯一标识它。因此,/n/nologo 等效,/ou:outfile.dll/out:outfile.dll 等效。

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr "ctl00_LibFrame_ctl10b15cc9e,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr "ctl00_LibFrame_ctl10img,"; </script> 备注

Tlbimp.exe 同时执行整个类型库的转换。该工具不能用于为在单个类型库中定义的类型子集生成类型信息。

能够将强名称分配给程序集通常是有用或必需的。因此,Tlbimp.exe 包括相应的选项,用以提供必需的信息来生成具有强名称的程序集。/keyfile:/keycontainer: 选项均签发具有强名称的程序集。因此,一次只提供这些选项中的一个是合理的。

在从包含多个类型库的模块中导入类型库时,可以选择将资源 ID 追加到一个类型库文件中。只有当类型库文件位于当前目录或者您指定了完整的路径时,Tlbimp.exe 才能找到该文件。请参见本主题中后面的示例。

<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr "ctl00_LibFrame_ctl123d41402,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr "ctl00_LibFrame_ctl12img,"; </script> 示例

下面的命令所生成的程序集与在 myTest.tlb 中找到的类型库具有相同的名称,并且具有 .dll 扩展名。

复制到剪贴板
tlbimp myTest.tlb 

下面的命令生成一个名为 myTest.dll 的程序集。

复制到剪贴板
tlbimp  myTest.tlb  /out:myTest.dll

下面的命令生成一个名称与 MyModule.dll/1 所指定的类型库的名称相同且扩展名为 .dll 的程序集。MyModule.dll/1 必须位于当前目录中。

复制到剪贴板
tlbimp MyModule.dll/1

下面的命令为类型库 TestLib.dll 生成一个名为 myTestLib.dll 的程序集。/transform:dispret 选项将该类型库中的调度接口方法的任何 [out, retval] 参数转换为托管库中的返回值。

复制到剪贴板
tlbimp TestLib.dll /transform:dispret /out:myTestLib.dll

上例中的类型库 TestLib.dll 包含一个名为 SomeMethod 的调度接口方法,它返回 void 且具有一个 [out, retval] 参数。下面的代码是 TestLib.dllSomeMethod 的输入类型库方法签名。

复制到剪贴板
void SomeMethod([out, retval] VARIANT_BOOL*);

指定 /transform:dispret 选项会使 Tlbimp.exe 将 SomeMethod[out, retval] 参数转换为 bool 返回值。以下是当指定 /transform:dispret 选项时,Tlbimp.exe 为托管库 myTestLib.dll 中的 SomeMethod 生成的方法签名。

C# 复制到剪贴板
bool SomeMethod();

如果使用 Tlbimp.exe 生成 TestLib.dll 的托管库时没有指定 /transform:dispret,则该工具为托管库 myTestLib.dll 中的 SomeMethod 生成以下方法签名。

C# 复制到剪贴板
void SomeMethod(out bool x);
<script type="text/Javascript"> var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr "ctl00_LibFrame_ctl20206ffb8,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr "ctl00_LibFrame_ctl20img,"; </script> 请参见
参考
.NET Framework 工具
类型库导出程序 (Tlbexp.exe)
MSIL 反汇编程序 (Ildasm.exe)
强名称工具 (Sn.exe)
SDK 命令提示
概念
将类型库当作程序集导入
具有强名称的程序集
用于向互操作程序集导入类型库的属性
其他资源
有关从类型库转换到程序集的摘要
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
tlbimp.jar是一个Java工具,用于生成Java类的包装,以便能够访问COM组件或ActiveX控件的功能。COM(Component Object Model)是一种微软提出的组件化编程模型,允许不同语言编写的软件组件能够相互协作。 当我们使用Java编程时,有时需要使用COM组件或ActiveX控件的功能,但是Java本身不直接支持这些功能。这时,tlbimp.jar可以帮助我们将COM组件或ActiveX控件的功能包装成Java类,从而能够在Java程序中直接调用。 tlbimp.jar的使用很简单,只需要在命令行中运行相应的命令,指定COM组件或ActiveX控件的类型文件(.tlb或.dll文件)即可。tlbimp.jar会自动解析类型文件,并生成对应的Java类和接口。生成的Java类和接口提供了与COM组件或ActiveX控件的功能相对应的方法和属性,我们可以通过这些方法和属性来使用相应的功能。 通过tlbimp.jar生成的Java类和接口,可以在Java程序中跟普通的Java类一样使用。我们可以实例化这些类,并调用类中的方法和属性以完成相应的功能。由于tlbimp.jar生成的Java类是根据COM组件或ActiveX控件的功能自动生成的,因此可以保证在Java程序中调用这些类时,能够得到与原始COM组件或ActiveX控件相同的结果。 总之,tlbimp.jar是一个非常有用的工具,可以帮助我们在Java程序中使用COM组件或ActiveX控件的功能。它简化了Java与COM组件或ActiveX控件的集成过程,使得我们能够更加方便地开发具有跨平台和可扩展性的应用程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值