2015-10-07 64 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); 
    } 

} 
相关问题