如何使用Xcode在Objective C项目中链接或添加openh264库

How to link or add openh264 library on Objective C project using Xcode

本文关键字:链接 添加 openh264 项目 Xcode 何使用 Objective      更新时间:2023-10-16

我正在使用Openh264库。我以前在Linux环境中使用过这个库。但是我没有找到任何工作文档来链接Xcode上的open264库。

我尝试了其他的解决方案来添加。a或。so库文件在Xcode像:i)如何导入c++库到Xcode Objective C项目?ii)如何链接或加载共享库(.so)在Objective C?

但不幸的是我每次都失败了。我从这个链接得到了OpenH264:https://github.com/cisco/openh264。我可以执行演示编码器解码器项目,这是由open264库给出的,但我需要帮助链接这个库在我自己的项目。

以下是将OpenH264库集成到任何Xcode项目的步骤:

  1. 从此链接下载或克隆OpenH264库:https://github.com/cisco/openh264
  2. 创建Xcode项目,选择IOS应用程序,Objective C和其他强制性选项。
  3. 将OpenH264库与所有文件和文件夹放在项目根目录下。例如,我的IOS应用程序位于目录/user/rajib/HelloApp/HelloApp。xcodeproj和OpenH264库保存在/user/rajib/HelloApp/OpenH264Library
  4. 现在打开终端并启用根模式。
  5. 进入OpenH264Library所在的目录,使用以下命令进行安装:->sudo make OS=ios ARCH=amrv7 install
  6. 现在转到Project Build Setting并找到Header Search Path属性。在该属性的单独行中添加以下头路径。$(继承)"$(SRCROOT)/OpenH264Library/codec/encoder/core/inc""$(SRCROOT)/OpenH264Library/codec/encoder/core/inc""$(SRCROOT)/OpenH264Library/codec/common/inc""$(SRCROOT)/OpenH264Library/codec/api/svc"
  7. 现在我们必须集成三个名为common的Xcode项目。xcodeproj 处理。xcodeproj welsenc。xcodeproj在HelloApp项目中。所有这些。xcodeproj文件将在OpenH264Library中找到。我们必须在OpenH264Library中找到这些带有那个名字的。xcodeproj文件,然后把这些文件拖放到HelloApp项目中。
  8. 现在转到项目构建阶段,找到Target Dependencies属性。从工作场所添加welsenc加工公共项目。
  9. 尝试构建这个项目,然后这3个项目将编译和执行,我们将在我们的工作场所找到3个静态库。
  10. 现在再次转到项目构建阶段,找到Link Binary with Libraries属性。添加libwelsenc。libprocessing。libcommon。来自工作场所的静态库。

就是这样……这是构建和链接open264库的过程。现在您可以轻松地调用open264库函数。在这里,我给出了一个简单的编码器初始化工作代码,调用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);
    }
}