Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167474
  • 博文数量: 66
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-23 15:21
文章分类

全部博文(66)

文章存档

2016年(66)

我的朋友

分类: LINUX

2016-05-16 17:10:17

int main()

        int   conSymmetricKeyMsg = 1;

        switch(conSymmetricKeyMsg)
        {
            case 1:
                                //这个环境变量是定义动态库存在的路径
                                if(getenv("DLDIR") != NULL)    
                                        len = snprintf(dlName, sizeof(dlName), "%s/%s", getenv("DLDIR"), "libKeyUpdate.so");
                                else
                                        len = snprintf(dlName, sizeof(dlName), "%s/bin/%s", getenv("REC"), "libKeyUpdate.so");

                                //获取动态库的名字(绝对路径)
                                dlName[len] = 0;

                                //打开动态库
                                if((dlHandle = dlopen(dlName, RTLD_NOW)) == NULL)
                                {
                                        printf("in SynchTCPIPTaskServer:: dlopen[%s] error[%s]\n", dlName, dlerror());
                                        ret = errCodeParameter;
                                        break;
                                }
                                
                                //用dlsym取得FunDLKeyUpdate 函数动态地址
                                if((FunDLKeyUpdate = dlsym(dlHandle, "UpdateKey")) == NULL)
                                {
                                        printf("in UnionSynchTCPIPTaskServer:: dlsym[%s] error[%s]\n", "UnionUpdateKey", dlerror());
                                        dlclose(dlHandle);
                                        ret = errCodeParameter;
                                        break;
                                }

                                //获取到动态库里面的函数之后就可以执行该函数了
                                if((ret = (*UnionFunDLKeyUpdate)((char *)buf+2)) < 0)
                                {
                                        printf("in UnionSynchTCPIPTaskServer:: UnionFunDLKeyUpdate ret=[%d]\n", ret);
                                        dlclose(dlHandle);
                                        break;
                                }
                                
                                //用dlclose关闭dlHandle 所指示的动态链接库
                                dlclose(dlHandle);
                                break;
        }
}
阅读(919) | 评论(0) | 转发(0) |
0

上一篇: makefile--filter(过滤函数)

下一篇:STATIC

给主人留下些什么吧!~~