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

熱點內容
編譯原理實驗pl0 發布:2025-05-09 13:18:03 瀏覽:605
銀行貸款ftp 發布:2025-05-09 13:10:56 瀏覽:461
思域後排有哪些配置 發布:2025-05-09 13:00:55 瀏覽:199
圖像的二值化演算法 發布:2025-05-09 12:55:29 瀏覽:756
解壓刮面 發布:2025-05-09 12:30:35 瀏覽:641
易語言腳本教程視頻 發布:2025-05-09 12:10:54 瀏覽:560
sql中變數查詢 發布:2025-05-09 12:05:32 瀏覽:182
phpajax表格數據 發布:2025-05-09 12:04:46 瀏覽:826
美國真人秀ftp 發布:2025-05-09 11:34:41 瀏覽:405
15升捷達自動擋什麼配置 發布:2025-05-09 11:25:16 瀏覽:342