Firemonkey使用iOS的第三方静态库(Link Binary With Libraries)
来源:互联网 发布:数据库实用教程 下载 编辑:程序博客网 时间:2024/05/22 05:31
最近需要从内存流中直接播放音频,想到了使用第三方音频播放库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}// Functionsconst{$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
- Firemonkey使用iOS的第三方静态库(Link Binary With Libraries)
- ios 开发 使用第三方静态库.a
- iOS第三方库GData的使用
- 添加到Embedded Binaries的框架也需要加到"Link Binary With Libraries"列表
- Yii Using 3rd-Party Libraries(使用第三方库)
- ANDROID NDK使用第三方静态库的方法
- ANDROID NDK使用第三方静态库的方法
- 一个使用第三方静态库(*.a)的jni实例以及 ndk 使用第三方静态库生成动态库的实例
- android NDK 使用第三方静态库
- xcode4中使用第三方静态库
- android NDK 使用第三方静态库
- android ndk 使用第三方静态库
- iOS静态库SDK制作(包含第三方静态库)
- iOS静态库SDK制作(包含第三方静态库)
- 在iOS中使用静态库(总结自官方文档Using Static Libraries in iOS)
- ios开发中经常使用的第三方库
- iOS开发之Sqlite 第三方库FMDB的使用
- 关于IOS添加第三方库使用的问题
- mysql编码问题
- vs2013 c++ 编程CString字符串查找替换后变乱码的原因及解决方法
- Android动画不改变可见属性
- HTML页面-------3秒之后自动跳转的3种常用的实现方式
- C语言 字符串常用函数(计算长度,拷贝,拼接,比较)
- Firemonkey使用iOS的第三方静态库(Link Binary With Libraries)
- 黑马程序员-Java中只读类String和StringBuffer、StringBuilder类)
- android MotionEvent中getX()和getRawX()的区别
- 回调
- android camera HAL v3.0详细介绍(一)
- Contiki OS 数据包接收流程分析
- LintCode-剑指Offer-(53)翻转字符串
- Codeforces--602A--Two Bases(水)
- Java基础——Java重点基础之集合框架(一)