Firemonkey使用iOS的第三方静态库(Link Binary With Libraries)
最近需要从内存流中直接播放音频,想到了使用第三方音频播放库bass。在windows上可以很方便的使用相应动态库(具体参考万一的博客),但在iOS上却没有相应的使用介绍,准确的说是没有用于Firemonkey上的示例。在它官方论坛找到一个用于OSX的Demo,通过分析和测试,研究出了Firemonkey在iOS开发上使用第三方静态库的流程和方法。
下面以在Delphi XE10上使用bass的静态库libbass.a为例。
1、获取要使用的静态库libbass.a文件,将libbass.a文件放在工程能search到的目录下,一般就放在当前工程目录下。
2、获取相应的头文件bass.h,翻译为Pascal接口文件bass.pas,具体过程和方法请自行百度。这里因为官网有OSX的demo,里面有OSX的调用声明文件bass.pas,只需稍微修改开头部分即可增加支持iOS。因为delphi移动平台不支持AnsiChar,为了不修改其他地方,这里引入了网上的ByteStrings单元dcu,里面定义了支持移动平台的AnsiChar。
- unit BASS;
- interface
- {$IFDEF MSWINDOWS}
- uses
- Windows;
- {$ELSE}
- {$IFDEF MACOS}
- uses
- Macapi.Dispatch
- {$IFDEF NEXTGEN}
- ,System.ByteStrings
- {$ENDIF}
- ;
- {$ENDIF}
- {$ENDIF}
- // Functions
- const
- {$IFDEF MSWINDOWS}
- bassdll = 'bass.dll';
- {$ENDIF}
- {$IFDEF LINUX}
- bassdll = 'libbass.so';
- {$ENDIF}
- {$IFDEF MACOS}
- {$IFDEF IOS} //增加支持iOS
- bassdll = 'libbass.a';
- {$ELSE} //增加支持iOS
- bassdll = 'libbass.dylib';
- {$ENDIF}
- {$ENDIF}
3、如果就这样编译工程,编译器将报标识符未找到的错误,如下图所示。这是因为静态库libbass.a依赖iOS的AudioToolbox.framework。
4、SDK Manager中增加AudioToolbox.framework。
5、Project->Options->Delphi Compiler->Linker->Options passed to the LD linker 中增加“-framework AudioToolbox”。
6、现在可以编译发布带libbass.a的程序了。但如果程序代码中使用BASS_StreamCreateFile函数,编译器将报标识符未找到的错误,如下图所示。这是因为该函数使用了iOS的CFNetwork.framework。
7、同理,需要增加CFNetwork的引用。由于SDK中已经默认同步了CFNetwork,因此只需在第5步Link Option中再增加一个“-framework CFNetwork”即可。
8、至此,就可以编译发布使用BASS播放内存MP3的程序了。
PS:官网说bass依赖的framework有: AudioToolbox, SystemConfiguration, CFNetwork, Accelerate, CoreMIDI(如果使用了BassMiDi)。所以请自行增加SystemConfiguration,Accelerate的引用。
Demo源码下载
libbass.a: http://s.cdz.la/file/7690588
bass.pas: http://s.cdz.la/file/7690589
demo: http://s.cdz.la/file/7690592
http://blog.csdn.net/tht2009/article/details/50183721
Firemonkey使用iOS的第三方静态库(Link Binary With Libraries)的更多相关文章
- 在iOS中创建静态库
如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315). =========================================== ...
- Carthage 让项目支持及使用,第三方静态库转为动态库
Carthage介绍 具体使用,可以查看官网的,文档地址 https://github.com/Carthage/Carthage.如果看不懂英文,可以看一下官文的翻译:https://www.jia ...
- 关于iOS上的静态库
最近再进行项目的真机调试,然后发现了一个天坑.就此研究了一些iOS上的静态库的使用: 首先我们是直接拿一个可以运行的项目来制作静态库的,网上大部分都是先创建静态库然后再写内容,看看我的方法. 1.把子 ...
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- iOS开发中静态库制作 之.a静态库制作及使用篇
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
- iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...
- 【iOS】编译静态库
与java和.net一样,objc也由类库的概念,不过在在objc上一般叫库,库表示程序代码集合,可以共享给其他程序使用,库是编译后的二进制文件,因此不能看到源代码,多用于一些开放sdk(如百度地图s ...
- cmake的使用二:链接第三方静态库
cmake的使用二:链接第三方静态库
- 【转】iOS编译OpenSSL静态库(使用脚本自动编译)
原文网址:https://www.jianshu.com/p/651513cab181 本篇文章为大家推荐两个脚本,用来iOS系统下编译OpenSSL通用库,如果想了解编译具体过程,请参看<iO ...
随机推荐
- step_by_step_G+入门-在线服务
第一步:先大概介绍下我们的窗体的布局框架,窗体大体分为以下3大块: 顶部:也就是大的模块划分(比如首页,软件管家,在线服务等) 内容区域:根据选择的不同的顶部模块,进行不同的内容展示: 底部:设置,下 ...
- 别忘记给你博客的windows live writer配置 ping服务
写好一篇博客,想要实现秒收.就必须要为文章添加ping服务. 这里介绍一下给wlw添加ping服务的办法. 点击工具---选项--ping服务器. 在右侧栏中加入以下地址 http://rpc.pin ...
- IPTABLES 映射问题
今天要做一个新的映射:将内网的一个8090口映射到外网的8087口. 在 /ETC/RC.LOCAL中最后插入: iptables -t nat -A PREROUTING -d outIP -p t ...
- nyoj-709-异形卵(水题)
异 形 卵 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 我们探索宇宙,是想了解浩瀚星空的奥妙.但我们却非常少意识到宇宙深处藏匿的危急,它们无时无刻不紧盯着我们的地球 ...
- asp.net MVC 使用JQuery.Ajax
使用到:Jquery.js 以及 Newtonsoft.Json.dll 客户端调用方式: $("#ButAjax").click(function() {$.ajax({type ...
- MySQl 存储过程+游标
DROP PROCEDURE IF exists pro_Insertflightplan_stat; create procedure pro_Insertflightplan_stat(exec ...
- xocde7下导入libsqlite3.tbd编译报错的解决办法
在xocde7下没有libsqlite3.dylib,只有libsqlite3.tbd,然后我导入了tbd.编译报错error: /Applications/Xcode.app/Contents/De ...
- 如何通过java反射将数据库表生成实体类?
首先有几点声明: 1.代码是在别人的基础进行改写的: 2.大家有什么改进的意见可以告诉我,也可以自己改好共享给其他人: 3.刚刚毕业,水平有限,肯定有许多不足之处: 4.希望刚刚学习java的同学能有 ...
- ansible笔记
ansible 资料 ansible 配置 ansible inventory配置文件 ansible模块 http://www.cnblogs.com/iois/p/6216936.html ans ...
- HTML5 总结-视频-1
HTML5 视频 视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG ...