當前位置:首頁 » 編程軟體 » 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-03-17 15:45:40 瀏覽:411
php代理商 發布:2025-03-17 15:39:22 瀏覽:108
微信屏幕怎麼設置密碼 發布:2025-03-17 15:25:17 瀏覽:919
虛擬機sql 發布:2025-03-17 14:53:17 瀏覽:270
螺紋M30的編程 發布:2025-03-17 14:51:00 瀏覽:140
java出參 發布:2025-03-17 14:50:54 瀏覽:931
安卓b站如何看私信 發布:2025-03-17 14:50:48 瀏覽:813
黑群暉外網訪問 發布:2025-03-17 14:44:02 瀏覽:718
孩子學編程要多少錢 發布:2025-03-17 14:37:31 瀏覽:806
java下載網路文件 發布:2025-03-17 14:36:50 瀏覽:65