當前位置:首頁 » 編程軟體 » dlc編譯器下載

dlc編譯器下載

發布時間: 2025-02-16 16:58:36

㈠ dlfcn(dlopen, dlsym, dlclose)

在學習openGL 編譯時,用到glad, 提示缺少 libdl.so 的定義——即需要引入動態庫 libdl.so;所以順便了解一下 dlfcn;

作用:在運行時載入動態庫,獲取相應的動態庫函數,並進行執行; (類比cpython 和 pybind11 編譯的動態庫,在python 中可以直接 import 導入使用)

對比:編譯時直接指定動態庫和這種方法的區別?? 它們的主要特性相同,dlfcn 方法載入動態庫更加靈活;至於編譯、鏈接等更細操作不再深究;

參考: 【1】 LINUX下動態鏈接庫的使用(dlopen/dlsym/dlclose/dlerror)_#include -CSDN博客 【2】 dlopen/dlclsoe使用中的陷阱

【1】包含基礎用法;【2】多進程使用問題; 【1】其它收獲: - 二級指針配合函數指針使用; - 基於結構體,一次傳遞多個函數——聯想到LINUX 驅動中有類似的寫法; - -fPIC,-rdynamic 含義;

在dlopen 動態庫之後,使用 dlsym 載入相應的函數,即dlsym(handle, function_name) ;

如果使用g++編譯動態庫,編譯器會修改函數的名字,可以通過輸出相應的匯編文件確定,如下: g++ --std=c++11 -S cal.c -fPIC -shared

通過 extern "C" {} 包裹相應的代碼,告訴編譯器基於C語言的規則進行編譯,代碼如下:

動態庫載入之後,相當於同一作用域, 全局變數/函數是共享的,如果想要在動態庫中修改main.c 全局變數或者函數,需要在動態庫中使用extern進行聲明。 註:聲明可以多次,但定義只有一次

完整代碼如下:

g++ -std=c++11 -shared -fPIC -o libcal.so cal.c && g++ -std=c++11 -o main main.c -ldl -rdynamic

熱點內容
仿ce源碼 發布:2025-02-21 17:39:24 瀏覽:997
hibernate資料庫配置 發布:2025-02-21 17:38:50 瀏覽:23
oj刷題網站哪個編譯器好用 發布:2025-02-21 17:29:20 瀏覽:416
編程用的系統 發布:2025-02-21 17:12:37 瀏覽:648
亞索最新腳本 發布:2025-02-21 17:11:07 瀏覽:427
java獲取本周 發布:2025-02-21 16:55:35 瀏覽:359
怎麼去掉同步伺服器地址 發布:2025-02-21 16:46:56 瀏覽:238
加密安卓 發布:2025-02-21 16:11:54 瀏覽:73
張軍編程 發布:2025-02-21 16:11:47 瀏覽:958
網站伺服器埠如何查看 發布:2025-02-21 16:11:00 瀏覽:408