載入外掛程式(三)

2021-08-01 18:55:21 字數 619 閱讀 8051

接著(二),重新把vlc_entry__core 寫出來:

int vlc_entry__core (vlc_set_cb vlc_set, void *opaque) 

注意(va_arg (ap, module_t *)) = submodule;這句,ap正好對應第四個引數,它是&module, 因此module被建立出來了。後面的vlc_set (opaque, module, vlc_module_name, (module_string))也是類似。

再看回(二)中的:

vlc_module_begin ()

set_category( cat_audio )

set_subcategory( subcat_audio_general )

add_category_hint( n_("audio"), aout_cat_longtext , false )

中間的設定非常多!!!

vlc_module_end ()

其實set_category( cat_audio )等等這些都是巨集,他們實際上都是通過vlc_plugin_setter 給module設定引數,就不一一詳述了。

載入外掛程式(二)之靜態載入

舉個例子來說明外掛程式的載入,以核心外掛程式為例,它在libvlc new中執行,流程如下 上圖中的vlc entry core是乙個函式指標,定義在modules.h中 core module int vlc entry core int void void int,void 那麼vlc entr...

載入外掛程式(四)之動態載入

三 中介紹了核心模組的載入,其實那是靜態載入,現在我們介紹一下動態載入,從allocatepluginfile 說起,參考 一 可以看到它的位置,這裡不重複了。流程如下 上圖中,呼叫windows api loadlibraryw 來載入動態庫,返回動態庫的控制代碼handle,然後呼叫getpro...

kettle外掛程式載入流程

kettle遵循著外掛程式機制,基於外掛程式使得kettle整個結構非常清晰,耦合性低,移植性強,特別是對kettle進行二次開發尤其方便,根據了解,擴充套件step型別的外掛程式比較多,具體步驟可以參考 通過了解外掛程式的載入流程,不僅kettle的原理有深一層的認識,還有助於在進行二次開發遇到問...