首页 文章

转换C&submodule包括objective-C项目(linphone)作为框架或静态库?

提问于
浏览
1

我想合并两个项目 .

First project

  • 用目标C和swift 2.3编写

  • Pod依赖项

  • 有不同的目标

  • 子模块依赖项

Second project

https://github.com/BelledonneCommunications/linphone

  • 以目标C编写

  • 依赖于用C语言编写的linphone SDK

  • 子模块依赖项

如何将第二个项目(linphone)转换为框架?

编辑1我已经集成了linphone项目(第二个项目),包括C编写的linphone SDK和Rectified all编译时错误 . 现在我能够运行该项目 . 但是我将为Submodules依赖做什么呢?编辑2目前,使用我们自己的SIP服务器帐户登录成功 . 现在我的问题是LinphoneManager

  • (void)createLinphoneCore
  • theLinphoneCore = linphone_core_new_with_config(&linphonec_vtable,configDb,(_ bridge void *)(self));
    theLinphoneCore是NULL,为什么?注意:仍然我没有集成子模块,但我可以做音频和视频通话一切正常 .

1 回答

  • 3

    构建完整的liblinphone SDK唯一合理的方法是通过适当的客户端存储库,例如: linphone-iphone或linphone-android . 正如您所发现的那样,可以使用以下方法构建为框架或静态库:

    ./prepare.py -c && ./prepare.py -DENABLE_STATIC_ONLY=ON && make && make zipsdk

    为libs设置DENABLE_STATIC_ONLY = ON,为框架设置= OFF:

    请注意:截至2017年6月,框架配置仍在开发中 . 它在模拟器和实际硬件上构建和运行,但由于子框架配置不正确,因此无法将生成的应用程序二进制文件提交给Apple . 如果您不需要提交(甚至不是TestFlight!)2-6个月,他们很快就会完成 .

    如果您需要更快地使用功能产品,请使用静态lib配置 . 唯一棘手的部分是在项目/工作区中设置所有内容 .

    • 使用上面的prepare.py完全清理并构建

    • 将libdphone-sdk中的sdk zip文件解压缩到您自己的项目目录中

    • 将liblinphone-sdk / apple-darwin / lib中的库添加到XCode 's Linked Frameworks and Libraries section under General. Click +, select 336377 , navigate to the libs directory. Don' t忘记在liblinphone-sdk / apple-darwin / lib / mediastreamer / plugins中包含任何库

    • 您可能需要为 Headers 搜索路径添加构建设置 $(SRCROOT)/liblinphone-sdk/apple-darwin/include

    • 您可能需要为库搜索路径添加构建设置 $(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib

    • linphone-iPhone的XCode项目是发现您可能需要进行的其他调整的好地方 .

    设置工作区可能需要反复试验 . Xcode对错误不是很好,但您应该能够使用Report Navigator视图查看完整的构建日志和错误消息 . 例如,如果您有一个未定义的符号,您可以尝试 grep -ri SYMBOLNAME liblinphone-sdk 来找出可能缺少的库 .

    关于你的 EDIT 2 问题,你需要所有的子模块,否则它将无法工作 . ortp,belle-sip,mediastreamer,srtp,mbedtls,它们都是必不可少的 . 只有mediastreamer插件编解码器(有些)是可选的 .

相关问题