dlsym

dlsym

dlsym是一個計算機函式,功能是根據動態程式庫操作句柄與符號,返回符號對應的地址,不但可以獲取函式地址,也可以獲取變數地址。

基本介紹

  • 中文名:dlsym
  • 包含頭檔案:#include<dlfcn.h>
  • 功能:返回符號對應的地址。
  • 函式定義:void*dlsym
基本定義,包含頭檔案:,函式定義:,函式描述:,返回值:,使用dlsym,

基本定義

包含頭檔案:

#include<dlfcn.h>

函式定義:

void*dlsym(void*handle,constchar*symbol)

函式描述:

dlsym(dynamic library symbol)
根據 動態程式庫 操作句柄(handle)與符號(symbol),返回符號對應的地址。使用這個函式不但可以獲取函式地址,也可以獲取變數地址。
handle:由dlopen打開動態程式庫後返回的指針
symbol:要求獲取的函式或全局變數的名稱。

返回值:

void* 指向函式的地址,供調用使用。

使用dlsym

假設在my.so中定義了一個void mytest()函式,那在使用my.so時先聲明一個函式指針:
void(*pMytest)();
接下來先將那個my.so載入:
pHandle=dlopen("my.so",RTLD_LAZY);//詳見dlopen函式
然後使用dlsym函式將函式指針 pMytest 指向 mytest() 函式:
pMytest=(void(*)())dlsym(pHandle,"mytest");//可見放在雙引號中的mytest不用加括弧,即使有參數也不用
(可調用dlerror();返回錯誤信息,正確返回為空)
最後通過調用函式指針執行mytest函式:
intmain(){//......pMytest();//......return0;}

相關詞條

熱門詞條

聯絡我們