dlopen错误

2 篇文章 0 订阅
1 篇文章 0 订阅

dlopen第三方动态库时经常会发生打开失败的错误,可以适用dlerror()函数查看具体错误:

void *dlh;
dlh = dlopen("libdes3-32.so", RTLD_NOW | RTLD_GLOBAL);
if (dlh == NULL)
{
      printf("dlopen err:%s.\n",dlerror());
}

如果错误信息与ELF格式相关,一般是第三方库的编译环境与本地环境差别所致,如不同的处理器体系结构。

采用file命令可以查看动态库的具体信息:

# file libhsbcpwd.so
libhsbcpwd.so:  ELF 32-位 MSB 动态库 SPARC 版本 1,动态链接,没有除去,无可用的调试信息
# file libdes3-32.so
libdes3-32.so:  ELF 32-位 LSB 动态库 80386 版本 1,动态链接,没有除去,无可用的调试信息

MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。 LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。

SPARC:SUN和TI公司合作开发的RISC微处理器。

80386:INTEL处理器。x86架构是可变指令长度的CISC(复杂指令集计算机,Complex Instruction Set Computer)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值