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。

留給需要的人。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM