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

C++ - Automatic Class Loading from DLL (Windows, Visual Studio)

本文关键字:Studio 加载 Visual DLL Windows C++      更新时间:2023-10-16

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

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

我想执行以下操作之一:

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

这听起来很像反射,甚至可能不适合一般C++,但是仅仅通过它们已经实现了 CDemonstration 就以某种方式将新的演示添加到列表中,而不是构建每个演示的显式列表,这将是非常好的。

谢谢!

如果每个派生类都在单独的 DLL 中,则可以:

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