在C ++中创建插件的最简单方法

时间:2018-01-11 14:02:01

标签: c++ windows dll plugins interface

每次我看插件的教程时,对于我想做的(概念上)简单的事情,它们看起来都非常复杂。

假设我们在Windows上,我想创建一个带有接口的程序,我想用它来实现插件作为动态外部库(dll)。

所以我有这样的标题:

  

Interface.h:

class Interface 
{
    public:
    virtual void overrideMe() = 0;
};

我使用其他代码(插件),以便我可以创建一个DLL:

  

MyPlugin.cpp

#include "Interface.h"

class MyPlugin: public Interface
{
    public:
    void overrideMe()
    {
        std::cout << "Hey, I am a specific MyPlugin DLL!" << std::endl;
    }
};

// DLL creation code blabla

所以想象一下,我从这段代码中创建了一个名为 MyPlugin.dll

的库

现在我想在通用程序中使用接口,但不是通过包含标头和使用传统多态,而是通过从我的dll动态调用/加载/收费:

  

MyProgram.cpp:

#include "Interface.h"

int main()
{
    // Interface* i = new MyPlugin; // nope!
    Interface* i = chargeMe("MyPlugin.dll"); // How to do this?

    i->overrideMe();  // display: "Hey, I am a specific MyPlugin DLL!"
}

现在的问题是:

  • 使用C ++最简单的方法是什么?
  • 现实世界中有chargeMe("MyPlugin.dll")这样的功能吗?
  • 我是否一定需要外部框架(如Qt)才能这样做,或者标准是否足够?

0 个答案:

没有答案