在Delphi 2010中如何将TypeLib作为safecall而不是stdcall导入?

4

2010年之前的Delphi版本在Delphi环境中有一个选项:“所有v-table接口”。这会改变导入类型库时的调用约定。但在2010年,该选项已经消失了。那么现在如何使用safecall调用约定导入类型库呢?我希望在2010年的版本中有更精细的控制级别,但无论如何,现在我该怎么做呢?

谢谢。


你可能在新的TLB导入器中发现了一个bug。 - Jim McKeeth
2个回答

3
我从未尝试使用Delphi 2010 IDE中的"All v-table interfaces"选项。在D2009中,它肯定是有问题的。
你可以使用命令行tlibimp工具创建所需的_tlb.pas文件:
tlibimp -P -Pt <tlb file>

我注意到tlibimp的帮助信息错误地说明了执行此操作的参数为-Pt-。它应该是-Pt或-Pt+。 - Doug Reece
帮助信息没有告诉你的是,它正在显示每个选项的默认设置。帮助中的“Pt”表示“将所有HRESULT映射到safecall”的默认设置为关闭状态 - 我也被这个问题困扰过 :-( - Alistair Ward

0

如果你查看生成的.ridl文件,你会发现方法已经被定义为_stdcall。

现在你可以使用.ridl文件进行更精细的控制。


这些类型库来自其他应用程序。我没有它们的.ridl文件。我正在导入该库。谢谢你的尝试。 - Steven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接