当前位置: 首页 > news >正文

c++ | 动态链接库 | 小结

//环境 linux c++
//生成动态链接库
//然后调用动态链接库中的函数//出现的问题以及解决//注意在win和在linux中调用动态链接库的函数是不一样的//在要生成链接库的cpp文件中比如以后要调用本文件中的某个函数,需要extern "c" 把你定的函数“再封装”避免重载出现的一些问题//举个实例吧
extern "c" void sum(int x, double y);void sum(int x, double y){std::cout<<(int) x + y<<std::endl;
}
#生成动态链接库libxxx.so 注意哈 在链接的时候,g++ 会把链接为libxxx.so--> lxxx		不好描述
g++ -fPIC -shared xxx.cpp -o libxxx.so
#include <dlfcn.h>typedef bool (*Function)(int, double);
Function exFunction = NULL;//类似初始化void* libHandle = dlopen("./lxxx.so", RTLD_LAZY);//这里还要做判断,是否初始化成功exFunction = (Function )(dlsym(libHandle, "sum"));//调用链接库中的函数
exFunction (4, 5.5);//释放资源
dlclose(libHandle);
#当重载多个函数,可能自己弄晕了,可以用下面的命令去找生成动态链接库后你的那个sum函数的函数符是什么,也就是说
#exFunction = (Function )(dlsym(libHandle, "sum"));中的sum 就是下面命令的输出结果
nm -D libext_curl.so | grep sum

参照如下
在这里插入图片描述
在这里插入图片描述
像第一个结果,如果我填入的是dlsym(libHandle, “GET”)会报错
如果这样写dlsym(libHandle, “Z3GETRSsS”)执行成功

http://www.lryc.cn/news/104404.html

相关文章:

  • 如何使用Flask-SQLAlchemy来管理数据库连接和操作数据?
  • 麒麟-飞腾Kylin-V4桌面arm64系统静态编译QT
  • CentOS 项目发出一篇奇怪的博文
  • 【Mybatis-Plus】or拼接
  • SpringBoot项目部署在Windows与Centos上
  • 网站服务器出错的原因分析和解决方法
  • 电影推荐系统】系统初步搭建及离线个性化推荐
  • Redis 集群 (cluster)
  • 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(19)-Fiddler精选插件扩展安装,将你的Fiddler武装到牙齿
  • 解决spring.thymeleaf.cache=false不起作用的问题
  • 企业可以申请DV https证书吗
  • 记一次phpmyadmin巧妙利用
  • HTML+CSS+JavaScript:轮播图的自动播放、手动播放、鼠标悬停暂停播放
  • 微信小程序:生成二维码带参数并获取值
  • 《Java面向对象程序设计》学习笔记——第 3 章 运算符、表达式和语句
  • XML约束和解析
  • 网络层:IP协议/Mac协议
  • 让你不在好奇怎么把录音转化成文字更快捷
  • 分布式异步任务处理组件(四)
  • 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值
  • Spring项目整合策略模式~实战应用
  • mybatis PageHelper的坑---记录
  • uniapp微信小程序下载文件并打开
  • 安卓Intent打开系统进程汇总
  • python学习(廖雪峰的官方网站部分,自学笔记)
  • python题-检查该字符串的括号是否成对出现
  • 3ds Max建模教程:模拟布料拖拽撕裂和用剑撕裂两种效果
  • 数据可视化(4)散点图及面积图
  • Redis - 数据过期策略
  • 英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测