我有一个主应用程序,它有一个接口(interface)(抽象类),这个接口(interface)需要在主应用程序和外部 dll 中都有实现。 我将使用指向此接口(interface)的指针来访问这些方法,因此我将根据某些条件将指针分配给任何一个实现的地址。
如何实现?
我遇到了一个 question在堆栈溢出中,标记为解决方案的答案是
主应用中的界面
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 中使用吗?
最佳答案
“dll 如何知道像 IModule 这样的东西存在?”
因为dll代码会包含声明IModule的头文件。头文件是不同源文件之间共享声明的方式。 Dll 对此没有影响,并且无需将 IModule 标记为外部。
顺便说一句,我会这样做
virtual ~IModule() {} // <= important!
关于c++ - 在主应用程序中声明的 dll 中实现接口(interface) - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13412128/