C ++ - 从DLL自动加载类(Windows,Visual Studio)

时间:2016-02-15 16:03:05

标签: c++ dll

我有一个基类CDemonstration和多个子类(每个实现运行不同的编码演示),并且需要构建一个包含每个子类的一个实例的主菜单(向量)。目标是维护一个菜单,以最少的努力列出每个演示。

最初在核心应用程序中,我创建了一个函数,它返回一个包含每个Demonstration的一个实例的向量,其中每个Demonstration都需要一个push_back,每个新的Demonstration都需要通过添加另一个push_back来修改应用程序。为了避免在每次需要添加新的Demonstration添加到列表时更改应用程序的源代码,我将所有的Demonstration放入一个单独的DLL中,并在DLL中创建了相同的向量返回函数,可以从核心应用程序调用它。但是,与构建/维护演示列表相关的工作只是被推到了其他地方。

我想做以下其中一项:

  • 遍历CDemonstration类型的DLL中的每个类,使用其默认构造函数对其进行初始化,并将其添加到向量中。
  • 将静态虚拟const Factory函数添加到基类,在每个子类中实现它,然后遍历每个Factory函数以获取要添加到向量的实例。

这听起来很像反射,在一般的C ++中甚至可能都不合适,但仅仅因为他们已经实现了CDemonstration而不是建立一个明确的列表,以某种方式将新的Demonstrations添加到列表中真的很不错示范。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您将每个派生类放在一个单独的DLL中,您可以:

  1. 使用文件系统API创建特定文件夹中的DLL列表
  2. 加载每个文件并调用API,返回特定菜单对象的句柄。
  3. 使用基类指针类型添加对象(只需确保将任何特定行为实现为虚方法)