【问题标题】:How do I Import TypeLib as safecall vs stdcall in Delphi 2010如何在 Delphi 2010 中将 TypeLib 导入为 safecall vs stdcall
【发布时间】:2010-02-24 08:05:39
【问题描述】:

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

谢谢。

【问题讨论】:

  • 您可能在新的 TLB 导入器中发现了一个错误。

标签: delphi delphi-2010 typelib


【解决方案1】:

我没有尝试在 Delphi 2010 IDE 中使用“所有 v-table 接口”选项。它肯定在 D2009 中被破坏了。

您可以使用命令行 tlibimp 工具来创建您需要的 _tlb.pas 文件:

tlibimp -P -Pt <tlb file>

【讨论】:

  • 我注意到 tlibimp 的帮助信息错误地指出执行此操作的参数是 -Pt-。它应该是 -Pt 或 -Pt+。
  • 帮助信息没有告诉您的是,它向您显示了每个选项的默认设置。 -Pt- 在帮助中说“将所有 HRESULT 映射到 safecall”默认情况下是关闭的 - 我也被这个抓住了:-(
【解决方案2】:

如果您查看生成的 .ridl 文件,您将看到方法已定义 _stdcall。

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

【讨论】:

  • 这些类型库来自其他应用程序。我没有他们的 .ridl 文件。我正在导入该库。感谢您的尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2015-03-05
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多