引用动态库libxxx.so中的func的方法
来源:互联网 发布:android读取串口数据 编辑:程序博客网 时间:2024/06/17 05:55
一种是通过头文件libxxx.h申明,-lxxx来导入symbol进行引用,另外一种是通过dlsym
来查找dll中func symbol,然后进行调用。
通过头文件也就是在Makefile中用-lxxx的方式来引用func时,必须保证随libxxx.so
的更新而更新libxxx.h,否则容易出现的问题就是当头文件中的
数据结构定义发生变化后,而导致引用错误。错误严重时,就是Segmentation fault
。哪怕你只是引用了一个根本没有使用头文件数据结构的func,
也会发生错误。这跟动态加载libxxx.so的机制有关系。
我觉得比较保险的做法是,跟libxxx.so中紧相关的模块,就严格引用libxxx.h/libxxx.
so的方法,这样方便一些。
如果弱相关,只是用了其中某一个func,最好是用dlsym的动态查找加载机制。
if (ret<0)
printf("open MsgQue %s fail!ret=%d\n",ret);这一句导致的Segmentation fault
惨痛的教训!
来查找dll中func symbol,然后进行调用。
通过头文件也就是在Makefile中用-lxxx的方式来引用func时,必须保证随libxxx.so
的更新而更新libxxx.h,否则容易出现的问题就是当头文件中的
数据结构定义发生变化后,而导致引用错误。错误严重时,就是Segmentation fault
。哪怕你只是引用了一个根本没有使用头文件数据结构的func,
也会发生错误。这跟动态加载libxxx.so的机制有关系。
我觉得比较保险的做法是,跟libxxx.so中紧相关的模块,就严格引用libxxx.h/libxxx.
so的方法,这样方便一些。
如果弱相关,只是用了其中某一个func,最好是用dlsym的动态查找加载机制。
if (ret<0)
printf("open MsgQue %s fail!ret=%d\n",ret);这一句导致的Segmentation fault
惨痛的教训!
- 引用动态库libxxx.so中的func的方法
- 在linux下制作libxxx.so 动态库以及使用方法
- Android 调用so文件中方法应该注意的 couldn't find "libXXX.so"
- Linux-(C/C++)动态链接库生成以及使用(libxxx.so)
- Linux-(C/C++)动态链接库生成以及使用(libxxx.so)
- Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名
- Android生成动态库so的方法
- Android引入动态库so的方法
- libxxx.so中不应加printf
- 运行程序,报没有libxxx.so的问题
- libxxx.so- text relocations问题的终极解决方案
- libxxx.so- text relocations问题的终极解决方案
- libxxx.so- text relocations问题的终极解决方案
- libxxx.so- text relocations问题的终极解决方案
- libxxx.so- text relocations问题的终极解决方案
- libxxx.so- text relocations问题的终极解决方案
- android ndk开发:JNI中怎的引用so动态库中的函数
- NDK_ROOT/objdump -tT libxxx.so
- MongoDB阅读精要分析
- 第十周上机实践项目——乘法口诀表。
- 连连看算法,我的一种实现
- x264 自适应量化模式 (AQ Adaptive Quantization) 初探
- Java7 安全机制和自签名证书的使用
- 引用动态库libxxx.so中的func的方法
- loaded the "BlueView" nib but the view outlet was not set 错误的解决办法。
- linux 输出正确或错误信息到文件 1> 或 2>>
- hierarchyviewer 用法
- clientabortexception:IOException
- c#中public private protected internal 的区别
- 第十二周项目 猜数字游戏
- Android指南针app的实现原理总结
- 窗口,部分快捷键,如最小化