码迷,mamicode.com
首页 > 移动开发 > 详细

Firemonkey使用iOS的第三方静态库(Link Binary With Libraries)

时间:2016-01-11 22:17:21      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

最近需要从内存流中直接播放音频,想到了使用第三方音频播放库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。

[delphi] view plaincopyprint?
 
  1. unit BASS;  
  2.   
  3. interface  
  4.   
  5. {$IFDEF MSWINDOWS}  
  6. uses  
  7.   Windows;  
  8. {$ELSE}  
  9.  {$IFDEF MACOS}  
  10. uses  
  11.   Macapi.Dispatch  
  12.    {$IFDEF NEXTGEN}  
  13.   ,System.ByteStrings  
  14.    {$ENDIF}  
  15.   ;  
  16.  {$ENDIF}  
  17. {$ENDIF}  
  18.   
  19. // Functions  
  20. const  
  21. {$IFDEF MSWINDOWS}  
  22.   bassdll = ‘bass.dll‘;  
  23. {$ENDIF}  
  24. {$IFDEF LINUX}  
  25.   bassdll = ‘libbass.so‘;  
  26. {$ENDIF}  
  27. {$IFDEF MACOS}  
  28.   {$IFDEF IOS}    //增加支持iOS  
  29.   bassdll = ‘libbass.a‘;  
  30.   {$ELSE}         //增加支持iOS  
  31.   bassdll = ‘libbass.dylib‘;  
  32.   {$ENDIF}  
  33. {$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)

标签:

原文地址:http://www.cnblogs.com/findumars/p/5122529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!