2
我知道插件是具有特定功能並被應用程序加載使用的組件。插件和共享對象庫
linux中的共享對象庫(.so)和windows中的.dlls是由應用程序在運行時加載的庫。
我想了解如果.dll/.so總是插件。是否所有插件.dll/.sos?
我知道插件是具有特定功能並被應用程序加載使用的組件。插件和共享對象庫
linux中的共享對象庫(.so)和windows中的.dlls是由應用程序在運行時加載的庫。
我想了解如果.dll/.so總是插件。是否所有插件.dll/.sos?
實際上,.dll
和.so
都是動態庫。還有其他類型的庫被稱爲靜態庫。在Linux中,它們的擴展名是.a
。
程序員傾向於使用庫來輕鬆維護他們的代碼。另外,如果庫將共享多個應用程序,則由於主內存使用情況而選擇共享庫。
您可以將此邏輯應用於包含插件的結構。如果代碼片段僅用於應用程序的單個進程,則可以使用靜態庫作爲插件。但是,如果代碼將由多個進程共享,則應使用共享庫,即使這些進程是同一應用程序的實例。
當您使用共享庫作爲插件時,不得將庫作爲已知方法包含在內,並且不得將可執行文件直接鏈接到庫。相反,您必須使用libdl
。看看here並尋找dynamic loading
。