【问题标题】:"implicit declaration of function" error in Objective-CObjective-C 中的“函数隐式声明”错误
【发布时间】:2011-12-13 23:18:55
【问题描述】:

我想将一个短字符串转换为 md5 哈希,我发现了几篇关于它的帖子,但没有人工作。 这是我发现的最简单的例子。我有这个错误

函数 CC_MD5 的隐式声明在 C99 中无效

- (NSString *) md5:(NSString *) input
{
 const char *cStr = [input UTF8String];
 unsigned char digest[16];
 CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call

 NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

 for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
 [output appendFormat:@"%02x", digest[i]];

 return  output;
 }

更新 我添加了#import,当我调用这样的方法时它工作正常:

[self md5:@"admin"];

,我得到了正确的 md5 哈希值。但是当我这样做时

 [self md5:userId];

我得到一个错误,

[NSDecimalNumber UTF8String]: 无法识别的选择器发送到实例 0x4d3e280 但 userId 不是小数,他包含 facebook id,但它被声明为 NSString

NSString *userId;
@property(retain,nonatomic) NSString *userId;

【问题讨论】:

    标签: iphone objective-c md5


    【解决方案1】:

    因为没有看到CC_MD5的声明。

    在您的项目中包含安全框架和

    #import <CommonCrypto/CommonDigest.h>
    

    【讨论】:

      【解决方案2】:

      您需要在定义 MD5 函数的类顶部包含 Crypto 库中的 CommonDigest 头文件,并包含安全框架

      #import <CommonCrypto/CommonDigest.h>
      

      【讨论】:

        【解决方案3】:

        您是否导入了定义 CC_MD5 的正确接口?

        #import "CommonDigest.h"
        

        【讨论】:

        • 我想你的意思可能是&lt;CommonDigest.h&gt;
        • 它仍然有效。但是如果你想给出完整的位置, 就像 SO 提到的一半一样
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2015-09-27
        • 2013-03-20
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        相关资源
        最近更新 更多