现在的位置: 首页 > 综合 > 正文

monotouch使用第三方framework库

2013年08月20日 ⁄ 综合 ⁄ 共 1121字 ⁄ 字号 评论关闭

很少写这东西,今天写是为了前半个月纠结的心。

刚换了工作,从以前的c++客户端跑来写ios,使用的是c#语言开发。开发平台用到了xcode4.5   monotouch平台。

近两个多星期一直在玩91SDK对接的问题,从不是如何下手到了今天找到了一些感觉了。

第一,monotouch中只能使用静态库,如自己在xcode中生成的一个.a文件, .dylib文件。

第二,对接91的时候发现了他们只给我们一个framework的文件(framework是一个动态库,还好里面找到了一个类.a的文件)

第三封装framework为一个.a的库。这样子我们可以在这个.a库中写一个中间类去调用91库。不这样子做应该也是可以的,但我没有试过,因为monotouch是用c#写的,要绑定的东西太多了,所以建议是写一个中间类,然后在monotouch中去绑定这个类的开放接口.

好了工作开始:

1.找到91framework文件中的.a文件吧。

上图有标出了哪个是.a文件了别找错了。

好的我们现在把这种.a的文件在framework中全找出来。还有哦里面的头文件也要拿出来全部的放在一个文件夹里面。

2.现在新建一个xcode工程

3.加入一些要的库

4.生成的版本

有真机和虚拟机上面的

真机

虚拟机

这时候会生成两个.a的,他们也是可以合成到一个.a里面的,具体上baidu

这里就小打个例子  liop -create "文件1.a路径" "文件2.a路径" -output "生成路径.a"

查看版本liop -info "文件.a路径"

会看到i386  armv7  armv6

(解出.a文件可以在终端中使用ar命令,NND说是ar命令其实是tar我研究了半天才发现)

1.     tar -x -f 文件.a

会生成几个.o的文件

5.使用这个.a

在monodevelop中创建一个monotouch binding工程

6。引入.a

这个是绑定的代码,是写在ApiDefinition.cs,如果有用到enum的绑定或是结构体的绑定定居  structsandenums.cs

7最后创建一个工程用于调用 他们。我这创建的是一个iphone的视图工程,记的在工程中要在选项中iphone build加入-v -gcc_flags="-lsqlite3  -L${ProjectDir}/lib/libsqlite3.dylib"

这个是连接一下系统的库。还有把第一张图中有提示的资源加入到工程中就OK了。

研究了大半个月转了很多圈子又回到了起点。国内baidu不给力,国外googole常打不开(不过找资料上google没选错)我全是在那上面找到的,同时这不是我一个人的研究,还有我的同事和我一起。感谢他们,感谢cctv,最后感谢csdn

抱歉!评论已关闭.