用于存储类的静态库与动态库

Posted

技术标签:

【中文标题】用于存储类的静态库与动态库【英文标题】:Static library vs Dynamic library for storing classes 【发布时间】:2013-07-02 13:44:57 【问题描述】:

我将我的类存储在静态库中。例如,修改原始头文件,例如添加行 pragma 注释(lib,“MyClass”),然后将文件复制到 Visual Studio 的包含和 lib 文件夹。一切都很好,直到我想要将菜单添加到我的类中。Lib 文件没有资源,所以我将为此类使用动态链接库。将类存储在 dll 中是否符合逻辑?我也不知道如何使用这样的dll... 这有一些例子吗?还有像 CFileDialog 这样的类有资源(对话框)这种类使用静态库还是动态的?

【问题讨论】:

【参考方案1】:

对我来说,这听起来像是“拆分事物的错误位置”。换句话说,如果您的库需要作为应用程序一部分的资源,那么它可能并不意味着首先是一个库——它要么是一个包含自己资源的适当的独立 DLL,因为它具有完整且独立功能,或者它实际上是主可执行文件的一部分,并使用主可执行文件的资源。

将某些东西放入库的意义在于,它允许将库内容与主应用程序分离。

当然,另一种选择是将相关资源信息从主应用程序传递到库中的类[当然,这也适用于 DLL]。

我的意思是菜单是属于主应用程序的东西——它知道它在FileEditView 等下面有什么。如果你正在编写一个文字处理器,你可能有那里有“拼写检查”之类的东西,但您不想在照片编辑器软件中进行“拼写检查”,但您可能需要某种方式来获取颜色配置文件信息,以使显示器的颜色平衡与官方颜色相匹配。因此,您处理菜单的“类”可能不应该“知道”菜单是什么,而只是通常如何处理菜单 - 您拥有的菜单来自实际的主应用程序。

我知道这并不是你问题的直接答案......

【讨论】:

感谢您的回答我想创建不需要任何其他工作的独立类,因此我将其转换为 dll 项目。我想没有别的事可做。跨度>

以上是关于用于存储类的静态库与动态库的主要内容,如果未能解决你的问题,请参考以下文章

静态库与动态库

静态库与动态库注入

CMake--静态库与动态库构建

Linux动态库与静态库

Linux动态库与静态库

[Linux 高并发服务器]制作静态库与动态库