插件和共享对象库

时间:2012-11-18 13:00:59

标签: plugins dll shared-libraries

我知道插件是负责特定功能并加载以供应用程序使用的组件。

Linux中的共享对象库(.so)和Windows中的.dll是应用程序在运行时加载的库。

我想了解如果.dll / .so总是插件的话。是所有插件.dll / .sos?

1 个答案:

答案 0 :(得分:1)

实际上,.dll.so是动态库。还有其他类型的库名为静态库。在Linux中,他们的扩展名为.a

程序员倾向于使用库来轻松维护代码。此外,如果库将共享多个应用程序,则会因主内存使用而选择共享库。

您可以将此逻辑应用于包含插件的结构。如果代码段仅由应用程序的单个进程使用,则可以使用静态库作为插件。但是,如果代码将由多个进程共享,则应使用共享库,即使这些进程是同一应用程序的实例。

使用共享库作为插件时,不得将库包含为已知方法,也不得将可执行文件直接链接到库。相反,您必须使用libdl。请查看here并查找dynamic loading