Firemonkey使用iOS的第三方靜態庫(Link Binary With Libraries)

來源:互聯網
上載者:User

標籤:

最近需要從記憶體流中直接播放音頻,想到了使用第三方音頻播放庫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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.