类型库导入程序(Tlbimp.exe)工具使用详解

来源:互联网  作者:本站整理
摘要:类型库导入程序工具主要用于将COM类型库中的类型定义转换为公共语言运行库程序集中的等效定义。Tlbimp.exe的输出为二进制文件(程序集),该文件中包含在原始类型库中定义的类型的运行库元数据。可以使用诸如Ildasm.exe这样的工具检查此文件。…

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

/tlbreference: filename
 指定类型库文件,用于在不参考注册表的情况下解析类型库引用。
请注意,此选项不加载某些较早的类型库格式。但是,您仍可以通过注册表或当前目录隐式加载较早的类型库格式。

/transform: transformName
 按 transformName 参数的指定转换元数据。
指定 dispret 作为 transformName 参数,可以将仅支持调度的接口(调度接口)的方法的 [out, retval] 参数转换为返回值。
有关此选项的更多信息,请参见本主题后面的示例。

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

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

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

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

备注说明

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

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

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

使用示例

下面的命令所生成的程序集与在 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.dll 中 SomeMethod 的输入类型库方法签名。
void SomeMethod([out, retval] VARIANT_BOOL*);

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

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

【相关文章】好搜一下
详解Java开发的数据库连接编程(JDBC)技术

详解Java开发的数据库连接编程(JDBC)

本文主要讲述JDBC、JDBC的工作原理,访问数据库的方法、Statement、…