zoukankan      html  css  js  c++  java
  • 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。

    留给需要的人。

  • 相关阅读:
    Linux centos 6.4安装
    vm虚拟机安装,配置与使用
    Linux简介
    360兼容视图
    补丁patch 漏洞 bug或glitch
    迫不得已! ! 仅仅针对IE浏览器的样式,尤其是IE8及以下
    JS延时器 定时器 暂停器 中断器
    CSS动态定位
    一个标准的AJAX请求
    ajax的两个重要参数contentType 和dataType
  • 原文地址:https://www.cnblogs.com/sundaysgarden/p/10730735.html
Copyright © 2011-2022 走看看