3

我了解插件是具有特定功能并加载以供应用程序使用的组件。

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

我想了解如果 .dll / .so 始终是插件会怎样。所有插件都是.dll / .sos吗?

4

1 回答 1

2

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

程序员倾向于使用库来轻松维护他们的代码。此外,如果库将被多个应用程序共享,则选择共享库是因为主内存使用情况。

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

当您将共享库用作插件时,您不得将库作为已知方法包含在内,并且不得将可执行文件直接链接到库。相反,您必须使用libdl. 看看这里并寻找dynamic loading.

于 2012-11-25T23:35:50.837 回答