美文网首页
动态加载动态库函数

动态加载动态库函数

作者: 54c1eca7148a | 来源:发表于2019-05-28 02:30 被阅读0次

1、简单的说,前面的动态库的制作和使用一节中,在加载时需要动态加载的资源在执行时被全部加载,而动态加载说的就是加载时按需加载。需要使用以下函数:

dlopen(3)    #参数3代表库函数,2代表系统调用,1代表命令。可以使用man 3 dlopen查看此函数的帮助,使用需要包含头文件 #include<dlfcn.h>

void  *dlopen(const char *filename,int flag);

功能:加载一个动态库文件

参数:

     filename:

        指定要加载的动态库的文件名称

     flag:

        RTLD_LAZY:暂缓决定,等有需要时再解出符号

        RTLD_NOW:立即决定,返回前解决所有未决定的符号

返回值:

    NULL:失败


dlclose(3)

void *dlclose(void *handle)

功能:

    将handle指定的动态库引用计数减1。当计数值为0或没有引用时对应的动态库将被unloaded

参数:

    handle:dlopen(3)的返回值

返回值:

    非0:错误

    0:成功

char *dlerror(void);

功能:

    获取最近调用dlopen,dlclose,dlsym所产生的错误信息

参数:

    void

返回值:

    非空:错误信息

    NULL:无错误信息


void *dlsym(void *handle,const char *symbol);

功能:

    返回有handle指定的动态库里的由symbol所指定加载到内存的地址。

参数:

    handle:dlopen(3)的返回值

    symbol:指定函数的名字

返回值:    

    NULL:在handle指定的动态库中找不到symbol所指定的内容

    非空:加载到内存的地址

举例:见PC的嵌入式练习文件夹


 另外需要注意的是,在链接时需要将上述函数所包含的动态库进行链接,否则无法使用上述函数。即-ldl

相关文章

  • 动态加载动态库函数

    1、简单的说,前面的动态库的制作和使用一节中,在加载时需要动态加载的资源在执行时被全部加载,而动态加载说的就是加载...

  • Android 动态加载(二) - 基础篇(二)

    前言 动态加载系列文章Android 动态加载(一) - 基础篇(一)Android 动态加载(二) - 基础篇(...

  • Android 动态加载(一)- 基础篇(一)

    前言 动态加载系列文章Android 动态加载(一) - 基础篇(一)Android 动态加载(二) - 基础篇(...

  • Android 动态加载(六) - 360开源框架DroidPl

    前言 动态加载系列文章Android 动态加载(一) - 基础篇(一)Android 动态加载(二) - 基础篇(...

  • JavaScript动态加载js和css

    动态加载js 参考:javascript 性能优化 动态加载css 参考: 动态加载 css 方法实现和深入解析 ...

  • 通过dlopen使用动态库

    动态库制作dlopen 动态加载Frameworks使用dlopen和dlsym方法动态加载库和调用函数动态库使用...

  • 6.动态加载

    对动态库的加载分为自动加载和动态加载两种1.1 动态加载:程序的执行期间,需要使用到某个动态库中的文件的时候,可以...

  • 2019-05-30

    Javascript之动态加载脚本和样式 //动态加载脚本 function loadScript(url){ ...

  • 类加载流程

    Android类加载器继承关系 动态加载Dex方案一 动态加载Dex方案二 阅读原文

  • 静态库(.a)和动态库(dylib)

    区别 1、加载 静态库:静态加载 动态库:动态加载 2、初始化 动态库可以在加载时进行初始化,并在客户端应用程序正...

网友评论

      本文标题:动态加载动态库函数

      本文链接:https://www.haomeiwen.com/subject/umhctctx.html