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

共享庫(kù)如何動(dòng)態(tài)加載

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

在計(jì)算機(jī)編程中,動(dòng)態(tài)加載庫(kù)(dynamically loaded (DL) libraries)是指在程序運(yùn)行過程中可以加載的函數(shù)庫(kù),不像共享庫(kù)那樣在程序啟動(dòng)時(shí)加載。動(dòng)態(tài)加載對(duì)于實(shí)現(xiàn)插件和模塊非常有用,因?yàn)樗鼈冊(cè)试S程序在需要時(shí)等待插件的加載。

dlopen函數(shù)

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

```c

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

```

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

dlerror函數(shù)

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

```c

char *dlerror(void);

```

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

dlsym函數(shù)

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

```c

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

```

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

dlclose函數(shù)

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

```c

int dlclose(void *handle);

```

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

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

標(biāo)簽: