Linphone SDK OS X - vcard_grammar

Linphone SDK OS X - vcard_grammar

我正在尝试将 https://download.linphone.org/releases/macosx/sdk/ 中的 linphone-sdk-Mac 集成到我的 objective c 应用程序中。 基本上我所做的是提取 zip 文件并将框架文件导入我的项目,然后将所有框架更改为“嵌入和签名”,然后编译。 程序运行良好,直到我尝试创建核心,即使使用“linphone_factory_create_core_with_config_3”或“linphone_factory_create_core_3”,它们都崩溃并出现相同的错误,即“无法加载语法 vcard_grammar 因为找不到文件”。 已经尝试将语法文件放在项目的多个位置,不同版本,包括最后一个,但没有成功。 无论如何有人知道解决这个问题吗?

示例代码:

LinphoneFactory *factory = linphone_factory_get();

NSString *linphonecfg = [LinphoneManager bundleFile:@"linphonerc"];
NSString *fileStr = [NSString stringWithContentsOfFile:linphonecfg encoding:NSUTF8StringEncoding error:nil];

configDb = linphone_config_new_from_buffer(fileStr.UTF8String);
theLinphoneCore = linphone_factory_create_core_with_config_3(factory, configDb, NULL);

已经尝试编译 linphone-desktop,但每次我尝试编译它时都会在随机位置失败,所以无法解决。

谢谢

所以在对 SDK 进行了大量修改之后,我想出了解决 vCard 问题的方法,并在没有它的情况下在 macOS 上使用 Swift/Objective-C(对于 arm64 和 x86_x64)正确编译。

编译SDK

  1. 使用自制软件安装以下依赖项:

    brew install pkg-config cmake doxygen nasm yasm
    
  2. 安装pip3/python3(如果你还没有)和它的依赖:

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python3 get-pip.py
    pip3 install pystache
    pip3 install six
    
  3. 递归克隆最新的 Linphone SDK 及其依赖项

    git clone --recursive https://gitlab.linphone.org/BC/public/linphone-sdk
    
  4. 制作并设置构建目录(-DENABLE_VCARD=OFF是这里的关键):

    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_VCARD=OFF ..
    cmake --build .
    

Xcode 整合

(如果构建成功,希望如此)

  1. 在您的构建文件夹中,进入您的 linphone-sdk/desktop 文件夹
  2. 您应该会看到几个不同的文件夹,但最重要的是 Frameworksshare
  3. Frameworksshare 文件夹添加到您的 Xcode 项目中,并选中以下选项:
  1. 如果您使用 Swift,您将需要使用以下行创建 Objective-C 桥接 header 以避免 [=21= 中出现大量错误] 在 share/linphonesw 文件夹中:
#import "linphone/factory.h"
#import "linphone/types.h"

#import "linphone/core.h"
#import "linphone/call.h"
#import "linphone/tunnel.h"
#import "linphone/wrapper_utils.h"
#import "linphone/core_utils.h"
#import "linphone/vcard.h"

#import "belle-sip/object.h"
#import "bctoolbox/list.h"
#import "mediastreamer2/msfactory.h"
  1. 在您的应用程序目标的 Frameworks, Libraries, and Embedded Content 部分,每个框架都应该是“嵌入并签名”。

  2. 尝试在 Swift 文件中编译和访问 CoreFactory 等...它应该可以工作,如果没有,请评论下面,我会尽力帮助你!