当前位置 : 主页 > 编程语言 > delphi >

从Delphi创建导出的C类的实例

来源:互联网 收集:自由互联 发布时间:2021-06-23
我跟随Rudy Velthuis关于在DLL中使用C类的优秀 article.一切都很好,除了我需要访问一些在C DLL中没有相应工厂的类.如何在DLL中构造类的实例?有问题的类定义为 class __declspec(dllexport) example
我跟随Rudy Velthuis关于在DLL中使用C类的优秀 article.一切都很好,除了我需要访问一些在C DLL中没有相应工厂的类.如何在DLL中构造类的实例?有问题的类定义为

class __declspec(dllexport) exampleClass
{
public:
  void foo();
};

现在没有工厂,我没有明确的方法来实例化类,但我知道它可以完成,因为我已经看到了使这些类可用于Python的SWIG脚本(.i文件).如果Python和SWIG可以做到这一点,那么我假设/希望有一些方法可以在Delphi中实现它.

现在我对SWIG知之甚少,但它似乎为C错位名称生成某种地图?那附近哪儿好吗?看看DLL的导出,我想我可以访问函数&构造函数/析构函数由索引或直接损坏的名称,但这将是令人讨厌的;它会工作吗?即使我可以调用构造函数,我该怎么做相当于“new CClass();”在德尔福?

正确的方法是编写一个包装器DLL,为您需要的类公开工厂.

我不确定SWIG的工作原理,但任何依赖逆向工程改名的东西似乎都是一种可疑的方法.

除了C对象应该只在C代码中创建.您应该将对象创建语义留给C运行时.

COM存在的原因.正是为了使这个跨语言对象隐喻整齐地工作.

我写了几十个从Delphi,python和C#调用的COM对象

网友评论