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

2021-08-01 18:55:21 字數 972 閱讀 6237

舉個例子來說明外掛程式的載入,以核心外掛程式為例,它在libvlc_new中執行,流程如下:

上圖中的vlc_entry__core是乙個函式指標,定義在modules.h中:

/** core module */

int vlc_entry__core (int (*)(void *, void *, int, ...), void *);

那麼vlc_entry__core 定義在**呢,為什麼呼叫它會跳到libvlc_module.c的vlc_module_begin()那裡,我們先來看下vlc_module_begin()的**:

vlc_module_begin ()

set_category( cat_audio )

set_subcategory( subcat_audio_general )

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

中間的設定非常多!!!

vlc_module_end ()

vlc_module_begin 實際上是乙個巨集,如下:

#define vlc_module_begin() \

extern_symbol dll_symbol \

int cdecl_symbol __vlc_symbol(vlc_entry) (vlc_set_cb, void *); \

extern_symbol dll_symbol \

int cdecl_symbol __vlc_symbol(vlc_entry) (vlc_set_cb vlc_set, void *opaque) \

\

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

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

載入外掛程式(三)

接著 二 重新把vlc entry core 寫出來 int vlc entry core vlc set cb vlc set,void opaque 注意 va arg ap,module t submodule 這句,ap正好對應第四個引數,它是 module,因此module被建立出來了。後...

Jquery外掛程式 之 zTree樹載入

ztree樹載入 ztree 是乙個依靠 jquery 實現的多功能 樹外掛程式 優異的效能 靈活的配置 多種功能的組合是 ztree 最大優點。在做專案的時候,我們經常能用到ztree,但是,有的時候,因為樹資料過多,而導致樹載入很慢,測試超過10000條資料就要載入3秒左右,如果有更多的資料,那...