當前位置:首頁 » 編程軟體 » 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

熱點內容
特種兵一個組怎麼配置 發布:2025-04-22 20:01:15 瀏覽:733
oracle資料庫命令 發布:2025-04-22 19:47:55 瀏覽:564
python異或運算符 發布:2025-04-22 19:45:21 瀏覽:832
網路為什麼改不了伺服器 發布:2025-04-22 19:44:38 瀏覽:535
js壓縮base64 發布:2025-04-22 19:29:53 瀏覽:200
颶風加密工具 發布:2025-04-22 19:27:50 瀏覽:640
發票江蘇伺服器地址 發布:2025-04-22 19:21:29 瀏覽:34
編譯器路徑錯誤 發布:2025-04-22 18:53:30 瀏覽:39
王者榮耀伺服器地址被屏蔽 發布:2025-04-22 18:46:25 瀏覽:637
光遇的安卓和蘋果有什麼區別 發布:2025-04-22 18:46:23 瀏覽:422