delphi - 如何将IDL导入到Delphi中?

标签 delphi com automation idl delphi-xe6

如何将接口(interface)定义语言 ( idl ) 文件导入到 Delphi 中;将类型和接口(interface)转换为 pascal 文件?

我已经尝试过:

  • 文件打开:仅显示 .idl 文本文件的文本
  • 项目添加到项目:它只是(作用类似于)添加 .idl文本文件到项目
  • 组件安装组件导入类型库添加:但它会导致处理崩溃
  • 组件安装组件导入 ActiveX 控件添加:但它会导致处理崩溃<
  • 使用 Embarcadero 的 GenTLB 工具:失败(这是有道理的,as GenTLB it doesn't support IDL,仅“RIDL”):

    D:\>gentlb d:\develop\avatar\pdb\source\import\CorSym.idl
    Embarcadero GenTLB Version 12.16581
    Copyright(c) 1995-2010 Embarcadero Technologies, Inc.
    
    Opening  'd:\develop\avatar\pdb\source\import\CorSym.idl'
    ***ERRORS*** - 3 errors encountered:
    Error E0001 CorSym.idl 14: 'library' expected, found 'cpp_quote' instead
    Error E0001 CorSym.idl 49: Type keyword expected, found 'const' instead
    Error E0001 CorSym.idl 63: '<EOF>' expected, found 'module' instead
    

奖励阅读

最佳答案

您可以通过 Embarcadero 工具使用两阶段流程:

  1. 使用 gentlb 从 IDL 文件创建类型库。
  2. 使用 tlibimp 从类型库创建 Pascal 导入文件。

我个人使用 gentlb 从 Embarcadero IDE 生成的 .ridl 文件创建类型库。我相信 .ridl 是 IDL 的 Embarcadero 风格,与标准 MS IDL 不兼容。如果您有 MS 风格的 IDL,那么您可以使用 MS IDL 编译器来生成类型库。

关于delphi - 如何将IDL导入到Delphi中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822452/

相关文章:

c# - 如何在 C# 中转换 IDispatch

c++ - 如果类实现了 1 个以上的接口(interface),VTable 的方法指针顺序是什么?

java - 使用 Java 的 Selenium WebDriver 多线程和浏览器隐藏

mysql - 列出存储过程函数的值

mysql - 为什么 SQLyog 返回 MySQL 查询结果的速度比我的 Delphi 程序快 10 倍?

Delphi FloatToStr - 为什么显示不同?

asp.net - 使用 IIS 下运行的 ASP.NET 控制 iTunes

c# - 是否有 gtk# 应用程序的自动化框架?

没有公共(public) DNS 的 Azure VM

mysql - 检索插入数据库的最后记录值的最佳方法