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。
留給需要的人。
