各位版友,有以下的問題想要請教一下:
我今天看到一段程式一直無法理解,所以上來請問一下版友
我先敘述一下問題,有一個shared lib:gpio.so裡面有一個
函式int module_init_gpio(void *data){},在程式中使用dlopen()來呼叫
,程式碼概述如下:
void *module = NULL;
int (*init) (void);
int retval = 0;
module = dlopen("gpio.so", RTLD_LAZY); //回傳值module沒有問題
dlerror(); //清空錯誤訊息
init = dlsym(module, "module_init_gpio");
if (dlerror()) {
printf("don't find");
return NULL;
}
retval = (*init)(); //<<不瞭解這段的用意
if (retval) {
printf("module initiate fail");
return NULL;
}
return module;
我的問題是,這行程式碼 retval = (*init)(); 的用意是什麼
我在module_init_gpio()中印訊息,不知道為何沒有印出來
看來是沒有執行該函式,也有可能是我自己耍笨誤會了,請版友指正謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.145.151
→
07/18 22:39, , 1F
07/18 22:39, 1F
→
07/18 23:02, , 2F
07/18 23:02, 2F
→
07/18 23:03, , 3F
07/18 23:03, 3F
→
07/19 20:21, , 4F
07/19 20:21, 4F
→
07/22 00:46, , 5F
07/22 00:46, 5F
→
07/22 00:46, , 6F
07/22 00:46, 6F