C++ - 从DLL(Windows,Visual Studio)自动加载类
C++ - Automatic Class Loading from DLL (Windows, Visual Studio)
我有一个基类CDemonstration和多个子类(每个实现运行不同的编码演示(,并且需要构建一个包含每个子类的一个实例的主菜单(向量(。目标是维护一个菜单,以最少的努力列出每个演示。
最初在核心应用程序中,我创建了一个函数,该函数返回一个包含每个演示的一个实例的向量,其中每个演示都需要一个push_back,并且每个新演示都需要通过添加另一个push_back来修改应用程序。为了避免每次需要添加新演示以添加到列表中时更改应用程序的源代码,我将所有演示放入单独的 DLL 中,并在 DLL 中创建相同的矢量返回函数,以便可以从核心应用程序调用它。然而,与建立/维护该示威清单有关的工作只是被推到了其他地方。
我想执行以下操作之一:
- 循环遍历 CDemonstration 类型的 DLL 中的每个类,使用其默认构造函数对其进行初始化,并将其添加到向量中。
- 将静态虚拟 const Factory 函数添加到基类,在每个子类中实现它,然后遍历每个工厂函数以获取要添加到向量的实例。
这听起来很像反射,甚至可能不适合一般C++,但是仅仅通过它们已经实现了 CDemonstration 就以某种方式将新的演示添加到列表中,而不是构建每个演示的显式列表,这将是非常好的。
谢谢!
如果每个派生类都在单独的 DLL 中,则可以:
- 使用文件系统 API 在特定文件夹中创建 DLL 列表
- 加载它们中的每一个并调用返回特定菜单对象的句柄的 API。
- 使用基类指针类型添加对象(只需确保任何特定行为都作为虚拟方法实现(
相关文章:
- Qt Visual Studio 2015 加载项编译问题
- 在Visual Studio 2017中创建的简单DLL不会在XP中加载
- 在Visual Studio中加载wxWidget pdb库
- Visual Studio 2017 和 2019 拒绝为C++项目加载符号
- 调试Android Studio中动态加载的本机库
- 如何在Microsoft Visual Studio中加载.xml文件
- Visual Studio 2017 加载规则集文件时出错
- Visual Studio - C++ - 以 32 位或 64 位构建和运行应用程序 - 从适当的程序文件目录加载 D
- 加载图像约500次后,此错误显示在Visual Studio Qimage:不记忆,返回空图像
- 正在安装Visual Studio 2013的QT加载项
- Visual Studio 在附加到进程时不会加载模块
- 不要在 Visual Studio 2012+Qt Visual Studio 加载项 1.2.1 中进行调试
- 如何将OpenGL加载到Visual Studio 2012中
- 无法在 Visual Studio 2010 中加载 libcef 符号
- 线程加载图像的速度更快,直到它们在Studio中消失
- 在Visual Studio 2015中调试本机应用程序加载的托管DLL
- 如何使用visual studio中显式加载的C++类dll
- 在visual Studio 2012上使用SDL加载.BMP图像时,它只显示一个帧
- Visual studio无法加载大量dll
- Qt Visual Studio加载项影子生成