OC调用c++函数
1.调用的时候我明明改成了 .mm , 也添加了libstdc++.dylib 调用自己(xcode )写的(cocoa static lib )c++ ,编译总是报找不到库里的函数,
最后我在调用的.mm文件里写了一个c++类,在这个类里调用, 在objc里用这个c++类指针,成功了, KFC(Kill Fuck Code)
\\\
工作需要,有个加密的函数是cpp的,需要oc调用一下。
具体拿到的大概是这样一个东西:
#include <openssl/evp.h>
#include <openssl/md5.h>
#include <string>
#include <stdio.h>
static std::string encode_pass(std::string pass)
{
std::string tmpStream;
//TODO:一顿加密操作
return tmpStream;
}
如何调用这个cpp的函数得到结果呢?
我是这么做的。
新建一个oc的类,h文件:
#import <Foundation/Foundation.h>
@interface OCEncode : NSObject
+(NSString *)encodeString:(NSString *)str;
@end
然后m文件:
#import ...
static std::string encode_pass(std::string pass)
{
std::string tmpStream;
//TODO:一顿加密操作
return tmpStream;
}
@implementation OCEncode
/** 调用cpp函数,获得加密字符串 */
+(NSString *)encodeString:(NSString *)s{
const char* destDir = [s UTF8String];
std::string ret = encode_pass(destDir);
NSString *str = [NSString stringWithCString:ret.c_str() encoding:NSUTF8StringEncoding];
// NSLog(@"%@",str);
return str;
}
@end
好了,成功拿到结果。
这里需要导入基础的ssl库。然后注意先把oc的string转成c++里的string。调用函数,然后得到c++的结果,再转成oc的string。
留给需要的人。