我有一个主应用程序,它有一个接口(抽象类),这个接口需要在主应用程序和外部 dll 中都有实现。我将使用指向此接口的指针来访问方法,因此我将根据某些条件将指针分配给任何一个实现的地址。
如何做到这一点?
我在堆栈溢出中遇到了一个问题,其中标记为解决方案的答案说
主应用程序中的界面
class IModule
{
public:
virtual ~IModule(); // <= important!
virtual void doStuff() = 0;
};
可以在主应用程序中实现
class ActualModule: public IModule
{
/* implementation */
};
并且可以从 dll 中导出一个函数以返回指向 dll 中实现的指针
__declspec (dllexport) IModule* CreateModule()
{
// call the constructor of the actual implementation
IModule * module = new ActualModule();
// return the created function
return module;
}
dll 将如何知道存在诸如IModule 之类的东西?
我可以将IModule标记为extern并在 dll 中使用吗?