如何使用 Xcode link 或在 Objective C 项目上添加 openh264 库
How to link or add openh264 library on Objective C project using Xcode
我正在使用 Openh264 库。我之前在 Linux 环境中使用过这个库。但是我还没有在 Xcode 上找到 link openh264 库的任何工作文档。
我尝试了其他解决方案来在 Xcode 中添加 .a 或 .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?
但不幸的是我每次都失败了。
我从这个 link 得到了 OpenH264:
https://github.com/cisco/openh264。
我可以执行 Openh264 库提供的演示编码器解码器项目,但我需要在我自己的项目中 link 这个库的帮助。
提前致谢。
以下是将 OpenH264 库集成到任何 Xcode 项目的步骤:
- 从此 link 下载或克隆 OpenH264 库:https://github.com/cisco/openh264
- 创建 Xcode 项目选择 IOS 应用程序、Objective C 和其他强制选项。
- 将 OpenH264 库与所有文件和文件夹放在项目根目录中。例如,我的 IOS 应用程序位于目录 /user/rajib/HelloApp/HelloApp.xcodeproj,OpenH264 库保存在 /user/rajib/HelloApp/OpenH264Library。
- 现在打开终端并启用root模式。
- 转到保存 OpenH264Library 的目录并使用以下命令进行制作:->sudo make OS=ios ARCH=amrv7 install
- 现在转到项目构建设置并找到 Header 搜索路径 属性。在单独的行中将以下 header 路径添加到该属性。
$(继承),"$(SRCROOT)/OpenH264Library/codec/encoder/core/inc","$(SRCROOT)/OpenH264Library/codec/processing/interface", "$(SRCROOT)/OpenH264Library/codec/common/inc", "$(SRCROOT)/OpenH264Library/codec/api/svc",
- 现在我们必须整合另外 3 个 Xcode 名为 common.xcodeproj、processing.xcodeproj 的项目, welsenc.xcodeproj 在我们的 HelloApp 项目中。所有这些 .xcodeproj 文件都可以在 OpenH264Library 中找到。我们必须在 OpenH264Library 中找到这些具有该名称的 .xcodeproj 文件,并将这些文件拖放到我们的 HelloApp 项目中。
- 现在转到项目构建阶段并找到 Target Dependencies 属性。从工作地点添加 welsenc、processing、common 项目。
- 尝试构建这个项目,然后这3个项目将编译并执行,我们将在我们的工作场所找到3个静态库。
- 现在再次进入项目构建阶段,找到 Link 带有 Libraries 属性的二进制文件。从工作场所添加 libwelsenc.a、libprocessing.a、libcommon.a 静态库。
就是这样...这是构建和 linking 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);
}
}
我正在使用 Openh264 库。我之前在 Linux 环境中使用过这个库。但是我还没有在 Xcode 上找到 link openh264 库的任何工作文档。
我尝试了其他解决方案来在 Xcode 中添加 .a 或 .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?
但不幸的是我每次都失败了。 我从这个 link 得到了 OpenH264: https://github.com/cisco/openh264。 我可以执行 Openh264 库提供的演示编码器解码器项目,但我需要在我自己的项目中 link 这个库的帮助。 提前致谢。
以下是将 OpenH264 库集成到任何 Xcode 项目的步骤:
- 从此 link 下载或克隆 OpenH264 库:https://github.com/cisco/openh264
- 创建 Xcode 项目选择 IOS 应用程序、Objective C 和其他强制选项。
- 将 OpenH264 库与所有文件和文件夹放在项目根目录中。例如,我的 IOS 应用程序位于目录 /user/rajib/HelloApp/HelloApp.xcodeproj,OpenH264 库保存在 /user/rajib/HelloApp/OpenH264Library。
- 现在打开终端并启用root模式。
- 转到保存 OpenH264Library 的目录并使用以下命令进行制作:->sudo make OS=ios ARCH=amrv7 install
- 现在转到项目构建设置并找到 Header 搜索路径 属性。在单独的行中将以下 header 路径添加到该属性。 $(继承),"$(SRCROOT)/OpenH264Library/codec/encoder/core/inc","$(SRCROOT)/OpenH264Library/codec/processing/interface", "$(SRCROOT)/OpenH264Library/codec/common/inc", "$(SRCROOT)/OpenH264Library/codec/api/svc",
- 现在我们必须整合另外 3 个 Xcode 名为 common.xcodeproj、processing.xcodeproj 的项目, welsenc.xcodeproj 在我们的 HelloApp 项目中。所有这些 .xcodeproj 文件都可以在 OpenH264Library 中找到。我们必须在 OpenH264Library 中找到这些具有该名称的 .xcodeproj 文件,并将这些文件拖放到我们的 HelloApp 项目中。
- 现在转到项目构建阶段并找到 Target Dependencies 属性。从工作地点添加 welsenc、processing、common 项目。
- 尝试构建这个项目,然后这3个项目将编译并执行,我们将在我们的工作场所找到3个静态库。
- 现在再次进入项目构建阶段,找到 Link 带有 Libraries 属性的二进制文件。从工作场所添加 libwelsenc.a、libprocessing.a、libcommon.a 静态库。
就是这样...这是构建和 linking 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);
}
}