swift 接C++

最近遇到一个项目需要用swift 对接c++,调用图像处理。对接的我头昏眼花,真的,一顿骚操作头皮发麻。
言归正传,首先就是把静态库拖入, 没得过多解释。
然后swift 没办法直接调用C++ , 所以只有通过OC包装一层,通过调用OC的方法来操作,这些都是基本操作瑟然后重点来了。
你要在oc当中倒入第三方库的头文件。有一些你要特别注意


14504953-f599c24ac607061c.png

1
比如这种骚东西, 读它的黄色警告, 需要把调用这个的头文件引用放在最前面 , 也就是你在OC的文件里, 你需要把import "库"放在系统库之前,比如放在#import"UIKit"之前,放在文件的最顶端


temp.m.png

2
然后,你就能在OC当中掉C++的方法了
我觉得C++ 真的很娇气,mmp,刚拿到就是蒙蔽的,比如说这个方法

BeaprCuetondetratf P• Roo Gteo atta.png

3
mmp, 开始就被坑了半天, unsigned char 什么鬼, 日哦,然后我尝试了用NSString int试了一哈,呵呵,找不到方法

O No matehing funetion foc ce.png

4
没错, 你就会看到上面这个报错,找不到方法,参数一定要按照上面的传, 参数类型必须传对
那unsigned char 这个参数类型又是怎么来的,你可以去百度,不过我估计你很难找到,mmp, 老子找了那么久都没有一个详细的,好难啊,看到网上一个说法unsigned char 其实就是bytes, 我试了一个也没法直接传,于是我灵机一动

(unsigned char)stringToUnsigned1(NSData )temp {.png

5
来个强转, 喝, 你别说, 还真是对的, 别给我扯什么NSSData 转char* 再转unsigned char , 别给我看什么[NSData bytes] 的类型行是const char 或者char

111.png

6
如上面这种,这些作者 不知道把代码写上去试试吗,能不能编译一哈试试 ,看看正不正确, 这是我百度到最多到东西,哎


14504953-253307e22156fc4c.png

7
int 就用int类型, double也用double,上面方法的int* color 是一个int数组, 用来传颜色的, 这个你得问你们后台传什么值, 说是int数组, 你别直接上oc 的数组哦, 你认识@[@255,@255] C++不一定认识哦。这个要写成c的形式
int a[6] = [252,252,252,252,252,252]
这样你就把这个int* 颜色数组搞定了, 什么int*要传一个地址值,在oc数组前加一个&,行之类的话, 你可以试一试,行的话就可以用.....
一切准备就绪了,参数也传对了,调用不报错了,编译走一波。。。


Icrypto-tramgwork.jpg

8
看来还是too young too simple,相信大家看见上面那句话的(symbol(s) not found for architecture arm64),都会 会心一笑, 这个错不多简单嘛,就是倒入库的时候出问题了,重新倒入嘛。对,开始的时候我也是这么想的, 然后各种倒,各种查问题,各种在技术群里问,都是说的相同的答案,这么简单, 大家都是看傻子一样。基本上网上搜索出的答案都是这个。下面的图片

symbol(s) not found for architecture arm64.png

9
直到我问了一个大佬, 他看的是另外一个地方的, 才知道这个库,给的只是模拟器版本,真机没法测试,之前加的openv2的静态库必须在真机跑,呵,原来C++的大佬实在是高啊, 我弄了半天, 结果,哭晕在厕所。就叫c++大佬给个真机的库。好吧, 看来一切都准备就绪了,来commond R走一波。
方法里的resultImg没有返回值,这个地方又搞了半天, 直到实在没办法了,截图给c++大佬看,然后他才突然想起, 网上拉到的数据要base64解码一次,我...,我...,高,实在是高啊。还有这种坑留给我的,什么都不说了,擦干眼泪继续干。
好吧这次终于,终于,终于成功了, 拿到了resultImg,是一个unsign char 的类型,有返回值了,说明对了瑟, 千辛万苦,终于出来了,就差最后一个unsign char 转data, 然后又去各种百度
你去百度什么 OC unsign char 转 NSData ,呵,我只能告诉你, 你还是太年轻,你这么百度什么都找不到, 还好我记得,在那里看到一个 unsign char 可以理解为byte 于是乎,尝试了一波

(NSData )charTc ata(unsigned chara)temp a1 Eo.png

10
对,真的可以转, 就差最后一步了,于是我发现,byte转NSData需要两个参数,另外一个怎么操作呢,我随机传了几个int值,发现传的不一样, 结果不一样。所以肯定不能乱传瑟,于是我就去百度,byte 的长度,呵呵,我自己看着都笑了,又耽误几小时,于是乎没有结果,也怪我,c懂的太少。突然我发现左边不是有一个返回类型嘛,我就又去问c++大佬,这个返回值是什么意思啊,他说是成功后返回的图片数据长度。放松心态,不要急躁,我.......(省略1万字)。高啊,实在是高,原来,坑都是一层一层的,一层一层嵌套的。终于,卧槽,结束了,估计我这次把OC接C++能遇到的问题都踩了一遍,因为C++大佬也是第一次弄iOS的静态库,贼牛逼的一个人,我还能说什么。


14504953-79e4a40deb72414b.png

11
总结:swift接C++,现在我知道的方法是必须通过OC做桥接,然后方法的参数类型一定不要传错,还有一定要问清楚方法的作用,参数,返回值。最好,是有一个你接的第三方库的 demo, 这个才是最实在的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335