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

时间:2009-09-30 06:00:52

标签: c++ delphi dll

有没有办法在Delphi中使用win32 dll导出的C ++类for win32?还有其他方法可以实现类似的东西(COM,.NET,......)吗?

2 个答案:

答案 0 :(得分:11)

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

  • “展平”对象,因此在调用端不再有对象,只是一个指针传递给DLL以及包装对象方法的一系列函数的其他参数。编写包装器非常简单,虽然它可能很乏味。

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

文章中给出了两种方式的完整示例。

答案 1 :(得分:4)

就我所知,在Delphi中,你不能使用从DLL导出的C ++类;你可以使用C函数,你可以将COM类导入Delphi。