卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

共享庫如何動態(tài)加載

在計算機編程中,動態(tài)加載庫(dynamically loaded (DL) libraries)是指在程序運行過程中可以加載的函數(shù)庫,不像共享庫那樣在程序啟動時加載。動態(tài)加載對于實現(xiàn)插件和模塊非常有用

在計算機編程中,動態(tài)加載庫(dynamically loaded (DL) libraries)是指在程序運行過程中可以加載的函數(shù)庫,不像共享庫那樣在程序啟動時加載。動態(tài)加載對于實現(xiàn)插件和模塊非常有用,因為它們允許程序在需要時等待插件的加載。

dlopen函數(shù)

dlopen函數(shù)位于dlfcn.h頭文件中,其原型為:

```c

void *dlopen(const char *filename, int flag);

```

第一個參數(shù)是字符形式的共享庫函數(shù)名,第二個參數(shù)是標(biāo)志,可以選擇延遲加載(RTLD_LAZY)或立即加載(RTLD_NOW)。函數(shù)返回一個通用類指針,成功時返回句柄(可以暫時理解為共享庫的首地址),失敗時返回NULL。dlopen函數(shù)主要用于打開和加載動態(tài)庫。

dlerror函數(shù)

dlerror函數(shù)的原型為:

```c

char *dlerror(void);

```

它主要用于獲取dlopen等函數(shù)調(diào)用過程中發(fā)生的最近一個錯誤的詳細信息。

dlsym函數(shù)

dlsym函數(shù)的原型為:

```c

void* dlsym(void *handle, const char *symbol);

```

第一個參數(shù)是句柄,也就是dlopen函數(shù)的返回值,第二個參數(shù)是字符串形式的符號,表示函數(shù)名。函數(shù)返回成功時,返回函數(shù)在內(nèi)存中的地址,失敗時返回NULL。dlsym函數(shù)主要用于根據(jù)句柄和函數(shù)名獲取在內(nèi)存中對應(yīng)的地址。

dlclose函數(shù)

dlclose函數(shù)的原型為:

```c

int dlclose(void *handle);

```

該函數(shù)主要用于關(guān)閉參數(shù)handle指定的共享庫,成功時返回0,失敗時返回非0。當(dāng)共享庫不再被任何程序使用時,可以通過調(diào)用dlclose函數(shù)回收共享庫所占用的內(nèi)存空間。

注意:在編譯鏈接時,需要增加選項“-ldl”,以便正確鏈接動態(tài)加載庫。

標(biāo)簽: