代码之家  ›  专栏  ›  技术社区  ›  Tobias Langner

如何在Delphi中使用DLL导出的C++类

  •  6
  • Tobias Langner  · 技术社区  · 15 年前

    在Win32中有没有使用在Delphi中由Win32 DLL导出的C++类的方法?有没有其他方法来归档类似的东西(com,.net,…)

    2 回复  |  直到 15 年前
        1
  •  11
  •   Rob Kennedy    15 年前

    无法导入类。只能导入函数。 Rudy Velthuis has written at length on the topic. 虽然不能直接使用导出的C++类,但他描述了一些实现相同效果的技术:

    • “展平”对象,因此在调用端不再有对象,只不过是一个指针,它与包装对象方法的一系列函数的其他参数一起传递给dll。写包装纸很简单,尽管它可能很乏味。

    • 使用纯虚拟类。Windows C++编译器和Delphi一般具有相同的VMT布局,因此如果C++类可以用纯虚方法列表来描述,则可以创建等价的Delphi声明,用DLL返回的对象指针进行某种类型的转换,然后继续进行。

    本文给出了两种方法的完整示例。

        2
  •  4
  •   imekon    15 年前

    在Delphi中,您不能使用从DLL导出的C++类;您可以使用C函数,并且可以将COM类导入到Delphi中。