日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC调用c++函数

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的OC调用c++函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。