每次我看插件的教程时,对于我想做的(概念上)简单的事情,它们看起来都非常复杂。
假设我们在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!"
}
现在的问题是:
chargeMe("MyPlugin.dll")
这样的功能吗?