原型:void*dlsym(void* handle,const char* symbol)
handle是由dlopen開啟動態鏈結庫後返回的指標,symbol就是要求獲取的函式或全域性變數的名稱。
int add(int a,int b)
int sub(int a, int b)
int mul(int a, int b)
int div(int a, int b)
gcc -rdynamic -o main main.c -ldl
#include #include #include //動態鏈結庫路徑
#define lib_caculate_path "./libcaculate.so"
//函式指標
typedef int (*cac_func)(int, int);
int main()
//清除之前存在的錯誤
dlerror();
//獲取乙個函式
*(void **) (&cac_func) = dlsym(handle, "add");
if ((error = dlerror()) != null)
printf("add: %d\n", (*cac_func)(2,7));
cac_func = (cac_func)dlsym(handle, "sub");
printf("sub: %d\n", cac_func(9,2));
cac_func = (cac_func)dlsym(handle, "mul");
printf("mul: %d\n", cac_func(3,2));
cac_func = (cac_func)dlsym(handle, "div");
printf("div: %d\n", cac_func(8,2));
//關閉動態鏈結庫
dlclose(handle);
exit(exit_success);
}
Linux下動態鏈結庫和靜態鏈結庫
第一部分 編譯過程 預處理過程,負責標頭檔案展開,巨集替換,條件編譯的選擇,刪除注釋等工作。gcc e表示進行預處理。編譯過程,負載將預處理生成的檔案,經過詞法分析,語法分析,語義分析及優化後生成彙編檔案。gcc s表示進行編譯。彙編,是將彙編 轉換為機器可執行指令的過程。通過使用gcc c或者as...
Linux下動態鏈結庫呼叫
2014 11 01 10 39 3人閱讀收藏 編輯 刪除2013 06 08 20 52 48 分類 整合開發環境相關 舉報 字型大小訂閱 linux下的靜態鏈結庫,做起來比較容易,只要將目標檔案用ar打包就可以,下面寫一下動態鏈結庫的製作和使用方法,完全是根據個人理解和經驗總結,有不對的地方還請...
linux動態鏈結庫
在做完mini6410移植全攻略後,打算把自己的linux c筆記,貼出來和大家共享,有不對支援希望大家指出,謝謝!在上篇文章中,是對靜態鏈結庫的介紹,其實有了上面的介紹動態鏈結庫的製作就簡單了,這篇來製作動態鏈結庫 建立動態鏈結庫 cpp view plain copy print?gcc sha...