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

标签 c++ delphi dll

有没有办法在 Win32 的 Delphi 中使用由 win32 dll 导出的 C++ 类?是否有其他方法来实现类似的东西(COM、.NET 等)?

最佳答案

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

  • “扁平化”对象,因此在调用方不再有对象,只有一个指针连同其他参数一起传递给 DLL,用于包装对象方法的一系列函数。编写包装器非常简单,尽管它可能很乏味。

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

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

关于c++ - 如何在 Delphi 中使用由 dll 导出的 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496318/

相关文章:

c++ - 我们是否应该在 C++ 中更喜欢临时变量而不是用户定义的变量

c++ - 全局const var声明一次,有可能吗?

c++ - BST 上的 "unresolved external symbol public: __thiscall",很可能是由于模板

delphi - OpenGL 中的奇怪行为

c++ - 如何在另一个 DLL 的 DLL 上使用 `/DELAYLOAD`

c++ - 为什么我们需要访问者模式中的accept()以及为什么我们不能直接调用visitor.visit()?

Delphi - 用于跟踪传播的访问违规的工具/技术

delphi - 在应用程序内部拖/放到另一个应用程序

dll - 在 Lua 5.1 中使用自定义 DLL

java - C++对象转java,将对象传递给java后属性不正确(int,double)