tuiopad在openframeworks下编译小记
tuiopad是ipad上一个开源的多点触摸库,符合tuio1.1协议规范,可以在app store中下载,能够把用户的多点触摸信号通过udp,tcp方式发送给实现了tuio协议的其他系统。
虽说是开源软件,但这个托管在google code上的项目实在不靠谱,好歹把编译环境说清楚啊;openframeworks也是,升级一个版本就向后不兼容,真心觉得微软在这方面比一些开源项目做的要好的多。如果一个项目不能够做到向后兼容,同时又不明确说明具体编译环境,最大的受害者还是使用这些库的用户以及开源库之后的推广与发展。
最早是从github上clone出来openframeworks v007最新版,因为tuiopad项目并没有指明具体是在哪个版本下编译的,最新版应该会比老版少些bug。之前有过tuiokinect编译的教训,因此这次编译tuiopad稍微有了点经验,很快的就先把openframeworks iphone simulator debug版编译出来了,虽然有200多个warning,但好歹是个能用的库。
然后把tuiopad放到apps的iPhoneExamples文件夹下,用xcode打开,编译没什么问题,只是需要额外添加tess2(Tess of d’Urbevilles,呵呵)
和poco库。
连接时出现了很纠结的问题。恩,最初时freetype.a找不到,这个很简单,把tuiopad依赖的freetype,Freeimage,glu库更新一下。接下来就是一连串悲剧的开始。首先是,lgcc_s.10.5 找不到,很经典的错误,解决方案参见 http://blog.csdn.net/kmyhy/article/details/6829123 。但之后居然说 ofAppMain找不到,但是openframeworks就是被集成在tuiopad项目里的嘛。这个就要理解xcode的项目原理了。of放在tuiopad里,只是表明它要在tuiopad中预编译,相当于项目依赖项,以及它的头文件可以被外部项目访问,但是,它编译出来的库不一定会被外部项目链接,因此要显式地把它加入到tuiopad链接库里。这样就基本链接完成了。
但是链接成功远远不够,启动程序,一接收到触摸事件即崩溃,而且错误来源是很底层的poco库,让人崩溃。
tuiopad是2010年12月份最后更新的(估计作者不维护了吧),抱着试试看的态度下载了openframeworks v0061版,经过复杂的链接依赖处理,运行之,居然成功了!
真是无语了。