xcode编译时由于函数重复导致的问题

本文介绍了在Xcode项目中遇到的polarssl与libtomcrypt库函数冲突的问题,主要表现为编译错误和运行时异常。通过分析问题现象和解决方法,发现两个库中存在同名函数md5_process导致冲突。为解决此问题,作者修改了polarssl库的源代码,将md5_process函数名更改为md5_process1,从而避免了函数冲突,确保了程序正常运行。
摘要由CSDN通过智能技术生成

xcode编译时由于函数重复导致的问题

polarssllibtomcrypt某个函数冲突的问题

现象:

说明:

我的程序分为主程序和sdk程序(framework),sdk中包括polarssl库(源文件)、libtomcrypt库(.a静态库文件)

问题一:

当都在framework中添加lib,在主程序中不添加libtomcrypt,则在使用polarssl库的ssl握手的时候会出现ssl握手失败:返回-30592

问题二:

当在主程序中也添加libtomcrypt.a库,则ssl握手会成功,但是在运行中的某个步骤会报错:hash_descriptor[hash_idx].process(&md, pInData,InDataLen)err


解决方法:

由于两个库中有相同的函数(函数名、函数参数都相同),所以导致两个库的方法串了;

我的polarssl是源文件,将函数名改掉就好(如:md5_process  —改为—> md5_process1),h文件和c文件都要改掉,再运行就不会出现上述问题了

对比一下重复的内容吧:

polarssl中的md5_process方法:

void md5_process1( md5_context *ctx, const unsigned char data[64] )
{
    uint32_t X[16], A, B, C, D;

    GET_UINT32_LE( X[ 0], data,  0 );
    GET_UINT32_LE( X[ 1], data,  4 );
    GET_UINT32_LE( X[ 2], data,  8 );
    GET_UINT32_LE( X[ 3], data, 12 );
    GET_UINT32_LE( X[ 4], data, 16 );
    GET_UINT32_LE( X[ 5], data, 20 );
    GET_UINT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值