【发布时间】:2018-02-13 00:58:34
【问题描述】:
我有一个链接到一些第 3 方动态库的 c++ 应用程序。我的一些主要类从这些库继承,并对这些库进行函数调用等。我的应用程序在理论上不包含这些库的情况下工作(即,如果我手动剥离与这些库有关的所有代码和引用,它会仍然有效),它只会在功能上受到更多限制。如果我可以做一个类比,想象一下我创建了一个 Windows 记事本克隆,并包含一个允许用户在文档中嵌入图片和视频的 3rd 方库。
当我分发我的应用程序时,我的客户可能没有安装这些库。有没有办法让我的程序检测所需的 DLL 库是否存在,如果没有安装则简单地忽略所有相关代码?
目前,如果我在未安装 3rd 方库的情况下运行我的应用程序,它会显示与缺少 DLL 和崩溃相关的错误。一个明显的解决方案是简单地发布我的应用程序的两个版本......一个没有外部依赖项,一个有,但我想避免像那样独立管理两个产品。
【问题讨论】:
-
您可能需要重新设计架构,但dynamic loading 可能是解决方案的一部分。
-
您可能有兴趣了解Plugin Pattern。
标签: c++ dll dependencies