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。
留給需要的人。
轉載于:https://www.cnblogs.com/sundaysgarden/p/10730735.html
總結
- 上一篇: LogViewer超大文本浏览工具
- 下一篇: 51nod1236 序列求和 V3