【问题标题】:Create a DLL Delphi, which exports C++ Classes创建一个 DLL Delphi,它导出 C++ 类
【发布时间】:2014-08-08 15:01:04
【问题描述】:

对于一个插件,我需要创建一个导出 C++ 类的 DLL。 (对于 Siemens HMI Operate)我的问题是,我想在 Delphi 中编写这个插件。我需要使用很多我自己的库,它们都是 Delphi。

那么问题来了:这样的DLL可以用Delphi创建吗?

当我在 PE Explorer 中打开这样一个插件 DLL(用 Visual C++ 编写)时,它的导出如下所示:

?createDialogBar@SlGfwPluginByMakroBase@@UAEPAVSlGfwDialogBar@@ABVQString@@PAVQWidget@@0@Z

public: virtual class SlGfwDialogBar * __thiscall SlGfwPluginByMakroBase::createDialogBar(class QString const &,class QWidget *,class QString const &)

【问题讨论】:

    标签: c++ delphi dll


    【解决方案1】:

    这样的DLL可以用Delphi创建吗?

    不,它不能。您需要使用宿主进程期望的特定 C++ 实现来创建 DLL。

    也许你能做的最好的事情是在那个特定的 C++ 实现中创建插件 DLL,然后通过调用你的 Delphi 代码来实现类的方法。但是宿主进程导入的C++类必须使用C++实现。换句话说,您使用 C++ 在要求特定 C++ 实现的插件接口和您用 Delphi 编写的代码之间架起一座桥梁。

    【讨论】:

    • 这意味着没有标准的 C++ DLL,它总是依赖于 C++ 编译器。例如,有一个 Visual C++ 2008 DLL。这是正确的吗?
    • 没错。 C++ 类不适合二进制互操作。这就是COM存在的原因。在我看来,设计这个插件界面的人没有考虑清楚。
    猜你喜欢
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多