c++实现加载so动态库中的资源

发布时间 - 2026-01-10 22:14:15    点击率:

实例如下:

#include <stdio.h> 
#include <dlfcn.h> 
#include <stdlib.h> 
#include <iostream> 


//编译命令 g++ -m32 EncodeOrDecode.cpp -ldl -o edcode
//名字通过nm -D xxxxxx.so获取

using namespace std;
int main(int argc,char **argv){
void *handle = dlopen("./libpub_com_service.so",RTLD_LAZY);
if(!handle){
printf("open libpub error ,dlerror=%s\n",dlerror());
return -1;
}
string src = "05d7151349b7fe9b54306d90f9c938b3";
string desKey = "pub.%?d5";//58
printf("start ..src=[%s].....size=[%d].\n",src.c_str(),src.size());
//encode 
typedef string (*encode_t)(const string encodeSrc,const string encodeKey);

encode_t encode = (encode_t)dlsym(handle,"_ZN10NS_PUB_API9DesEncodeESsSs");
if(!encode){
printf("not found encode function ,dlerror= %s \n",dlerror());
dlclose(handle);
return -1;
}
string encodeStr = encode(src,desKey);
printf("get the encode function success ..encodeStr=[%s].....size=[%d]\n",encodeStr.c_str(),encodeStr.size());
//decode 
typedef bool (*decode_t)(const string decodeSrc,const string decodeKey,string &outResult);

decode_t decode = (decode_t)dlsym(handle,"_ZN10NS_PUB_API9DesDecodeESsSsRSs");
if(!decode){
printf("not found decode function ,dlerror= %s \n",dlerror());
dlclose(handle);
return -1;
}
string decodeOut;
bool ret = decode(encodeStr,desKey,decodeOut);
printf("get the decode function success ...ret=[%d]...decodeOut=[%s].....size=[%d]\n",ret,decodeOut.c_str(),decodeOut.size());
//end
dlclose(handle);

return 0;

}

以上就是小编为大家带来的c++实现加载so动态库中的资源全部内容了,希望大家多多支持~


# c  # 动态加载so  # C++ DLL动态库的创建与调用(类库  # 隐式调用)  # C++ Cmake的构建静态库和动态库详解  # VisualStudio2019构建C/C++静态库和动态库dll的问题 附源码  # 详解C++ 动态库导出函数名乱码及解决  # c++动态库调用的实现  # 小编  # 大家多多  # 库中  # 加载  # int  # std  # argc  # main  # namespace  # edcode  # ldl  # xxxxxx  # nm  # RTLD_LAZY  # libpub_com_service  # open  # printf  # dlopen  # argv  # char 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 音乐网站服务器如何优化API响应速度?  活动邀请函制作网站有哪些,活动邀请函文案?  如何注册花生壳免费域名并搭建个人网站?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  做企业网站制作流程,企业网站制作基本流程有哪些?  如何快速搭建安全的FTP站点?  如何安全更换建站之星模板并保留数据?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Python文件操作最佳实践_稳定性说明【指导】  bootstrap日历插件datetimepicker使用方法  佛山企业网站制作公司有哪些,沟通100网上服务官网?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何基于云服务器快速搭建个人网站?  如何快速搭建高效WAP手机网站?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel如何处理异常和错误?(Handler示例)  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  b2c电商网站制作流程,b2c水平综合的电商平台?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  详解阿里云nginx服务器多站点的配置  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  EditPlus 正则表达式 实战(3)  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  如何确保西部建站助手FTP传输的安全性?  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Bootstrap CSS布局之列表  长沙企业网站制作哪家好,长沙水业集团官方网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  微信小程序 HTTPS报错整理常见问题及解决方案  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  如何快速建站并高效导出源代码?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何快速上传自定义模板至建站之星?  如何制作一个表白网站视频,关于勇敢表白的小标题?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Laravel如何保护应用免受CSRF攻击?(原理和示例)