我了解插件是具有特定功能并加载以供应用程序使用的组件。
linux 中的共享对象库 (.so) 和 windows 中的 .dll 是应用程序在运行时加载的库。
我想了解如果 .dll / .so 始终是插件会怎样。所有插件都是.dll / .sos吗?
我了解插件是具有特定功能并加载以供应用程序使用的组件。
linux 中的共享对象库 (.so) 和 windows 中的 .dll 是应用程序在运行时加载的库。
我想了解如果 .dll / .so 始终是插件会怎样。所有插件都是.dll / .sos吗?
实际上,.dll
's 和.so
's 是动态库。还有其他类型库称为静态库。在 Linux 中,它们的扩展名为.a
.
程序员倾向于使用库来轻松维护他们的代码。此外,如果库将被多个应用程序共享,则选择共享库是因为主内存使用情况。
您可以将此逻辑应用于包含插件的结构。如果代码片段仅由应用程序的单个进程使用,则可以使用静态库作为插件。但是,如果代码将由多个进程共享,则应该使用共享库,即使这些进程是同一应用程序的实例。
当您将共享库用作插件时,您不得将库作为已知方法包含在内,并且不得将可执行文件直接链接到库。相反,您必须使用libdl
. 看看这里并寻找dynamic loading
.