2015-10-07 48 views
0

我正在使用Openh264庫。我在Linux環境下使用這個庫之前工作過。但是我還沒有找到任何工作文檔來鏈接Xcode上的openh264庫。如何使用Xcode鏈接或添加目標C項目上的openh264庫

我曾嘗試其他的解決方案,在Xcode中添加某或.so庫文件,如: 我)How to import a C++ library into a Xcode Objective C project? II)How to link or load shared libraries (.so) in Objective C?

可惜我每次都失敗了。 我從這個鏈接得到了OpenH264: https://github.com/cisco/openh264。 我可以執行由Openh264庫提供的演示編碼器解碼器項目,但我需要幫助將此庫鏈接到我自己的項目中。 在此先感謝。

+0

看起來您需要熟悉諸如'make'等核心概念。 –

+0

我已成功執行Makefile以在我的Mac OS上構建OpenH264。 – RajibTheKing

+0

@RajubTheKing然後有什麼問題? Makefile似乎指定了正在構建的靜態庫,您可以將它添加到項目中,就像添加其他靜態庫一樣。 –

回答

0

這裏有OpenH264庫集成到任何的Xcode項目的步驟:

  1. 從這個鏈接下載或克隆OpenH264庫:https://github.com/cisco/openh264
  2. 創建Xcode項目選擇IOS應用程序,目的C和其他強制性選項。
  3. 將OpenH264庫放置在項目根目錄下的所有文件和文件夾中。例如我的IOS應用程序是在目錄/user/rajib/HelloApp/HelloApp.xcodeproj,和OpenH264庫保存在/用戶/ rajib/HELLOAPP/OpenH264Library
  4. 現在打開終端並啓用根模式。
  5. 轉至OpenH264Library保持與下面的命令使目錄:- >須藤使OS = IOS ARCH = amrv7安裝
  6. 現在轉到項目生成設置,找到頭搜索路徑屬性。將以下標題路徑添加到該屬性的單獨行中。 $(繼承)「$(SRCROOT)/ OpenH264Library /編解碼器/編碼器/芯/ INC」「$(SRCROOT)/ OpenH264Library /編解碼器/處理/接口」「$(SRCROOT)/OpenH264Library /編解碼器/普通/ INC」「$(SRCROOT)/ OpenH264Library /編解碼器/ API/SVC」
  7. 現在我們要整合3個項目的Xcode名爲common.xcodeproj處理。我們的HelloApp項目中的xcodeprojwelsenc.xcodeproj。所有這些.xcodeproj文件將在OpenH264Library中找到。我們必須在OpenH264Library中找到這些帶有該名稱的.xcodeproj文件,並將這些文件拖放到我們的HelloApp項目中。
  8. 現在轉到項目構建階段並找到目標依賴關係屬性。添加welsenc,加工,普通項目從工作的地方。
  9. 試着建立這個項目,然後這3個項目會編譯並執行,我們會在我們的工作地點找到3個靜態庫。
  10. 現在再次進入項目構建階段,找到Link Binary with Libraries屬性。從工作場所添加libwelsenc.a,libprocessing.a,libcommon.a靜態庫。

就是這樣......這是構建和鏈接openh264庫的過程。 現在您可以輕鬆調用openh264庫函數。這裏我給出一個簡單的編碼器初始化代碼,調用OpenH264庫函數。

//Adding Header files 
#include "codec_api.h" 
#include "codec_def.h" 

//Calling OpenH264 Library function to initialize Encoder 
- (IBAction)EncoderTestBtn:(id)sender { 
    NSLog(@"Inside EncoderTestBtn"); 
    ISVCEncoder *pEncoder = NULL; 
    int iRet = -1; 
    iRet = WelsCreateSVCEncoder(&pEncoder); 
    if(iRet == 0) 
    { 
     NSLog(@"Rajib_Check: Encoder Initialization SUCCESSFUL"); 
    } 
    else 
    { 
     NSLog(@"Rajib_Check: ERROR--> iRet returned with = %d", iRet); 
    } 

} 
相關問題