OC调用c++函数
1.調(diào)用的時(shí)候我明明改成了 .mm ?, 也添加了libstdc++.dylib ?調(diào)用自己(xcode )寫的(cocoa static lib )c++ ?,編譯總是報(bào)找不到庫(kù)里的函數(shù),
最后我在調(diào)用的.mm文件里寫了一個(gè)c++類,在這個(gè)類里調(diào)用, 在objc里用這個(gè)c++類指針,成功了, ?KFC(Kill Fuck Code)?
\\\
工作需要,有個(gè)加密的函數(shù)是cpp的,需要oc調(diào)用一下。
具體拿到的大概是這樣一個(gè)東西:
#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;
}
?
如何調(diào)用這個(gè)cpp的函數(shù)得到結(jié)果呢?
我是這么做的。
新建一個(gè)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
/**?調(diào)用cpp函數(shù),獲得加密字符串?*/
+(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
?
好了,成功拿到結(jié)果。
這里需要導(dǎo)入基礎(chǔ)的ssl庫(kù)。然后注意先把oc的string轉(zhuǎn)成c++里的string。調(diào)用函數(shù),然后得到c++的結(jié)果,再轉(zhuǎn)成oc的string。
留給需要的人。
轉(zhuǎn)載于:https://www.cnblogs.com/sundaysgarden/p/10730735.html
總結(jié)
- 上一篇: LogViewer超大文本浏览工具
- 下一篇: 51nod1236 序列求和 V3