当前位置:首页 » 编程软件 » 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 22:55:35 浏览:255
王者荣耀安卓系统怎么转换到苹果 发布:2025-04-22 22:53:29 浏览:982
emobile7服务器地址如何查看 发布:2025-04-22 22:32:51 浏览:763
房间的秘密码是什么 发布:2025-04-22 22:32:43 浏览:121
文件夹前面多了选择框 发布:2025-04-22 22:32:40 浏览:704
迅雷网ftp 发布:2025-04-22 22:30:02 浏览:622
鼠标驱动源码 发布:2025-04-22 22:29:55 浏览:768
如何开发android应用 发布:2025-04-22 22:18:55 浏览:880
医保卡密码从哪里看 发布:2025-04-22 22:14:34 浏览:260
地铁逃生安卓更新后为什么进不去 发布:2025-04-22 22:13:49 浏览:443