C语言中dlopen和dlsym如何使用(c语言,dlopen,dlsym,开发技术)

时间:2024-05-07 07:42:54 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    C%E8%AF%AD%E8%A8%80%E4%B8%ADdlopen%E5%92%8Cdlsym%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8

为了是不同的逻辑解耦,一般会把各个业务封装成动态库,然后主逻辑去调用各个插件。这里有个问题是,为什么以前我们都是通过include第三方的头文件,然后通过连接器实现,现在却要利用dlopen呢?考虑以下情况,比如我们要用cublas这个库的sgemm函数。

我们知道cublas是英伟达提供的,人家每年都要更新动态库的,比如今年更新后,动态库的头文件改了cublas_v2.h, 函数名改为sgemm_v2, 这样一顿操作后,你不仅要升级库,也要修改已经上线的代码,假如这个sgemm函数在你源码中出现了n多次,这将是一个灾难。但是通过下面的方式你就可以避免这个问题:

gcc -fPIC -shared caculate.c -o libcaculate.so

dlopen是加载动态链接库,flag可以设置不同的模式(RTLD_LAZY 暂缓决定,等有需要时再解出符号, RTLD_NOW 立即决定,返回前解除所有未决定的符号。), dlopen可以返回动态库的句柄,dlsym是获取动态库中的具体函数名或者变量名。dlopen是关闭动态库。

gcc -rdynamic -o main main.c -ldl

本文:C语言中dlopen和dlsym如何使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C#+EmguCV怎么实现使用摄像头读取、保存视频下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18