1

我们正在将一家通信公司的软件集成到我们自己的软件中,用于接听电话、转接电话、与客户匹配号码等。

他们为我们提供了 API 文档,其中包括一个 TLB 文件。我们已经使用 tlbimp 工具创建了一个程序集,我们现在想在我们的实现中使用它。

由 tlbimp 创建的一些类已被赋予内部构造函数,使它们无法实例化。我认为在这种情况下应该没问题,因为另一个类应该返回这些类的实例。

这让我想到:在使用 tlbimp.exe 和整个 TLB 时,我还应该注意哪些其他陷阱?手动创建 DllImport/ComImport/PInvoke 代码会更好吗?

4

2 回答 2

2

一般来说,如果你有一个 TLB,我至少会通过使用 tlbimp 生成的程序集来开始我的工作。

该工具本身被广泛使用,并根据 TLB 中提供的定义生成正确的代码。我见过一些结果代码不正确的情况,但它几乎总是回到非常复杂的数组编组情况,或者 TLB 作者只是简单地添加了错误的 COM 注释的地方。

如果您确实发现任何问题,那么您应该考虑开始手动编写修复代码。但我当然不会那样开始。

于 2012-05-01T15:13:16.150 回答
2

您不能调用类型库中声明的那种 COM 接口方法。实现 COM 服务器的 DLL 不会导出方法。您可以将后期绑定与反射或动态关键字一起使用,但这很痛苦且容易出错。使用导入库,这就是它存在的原因。

于 2012-05-01T17:56:47.063 回答