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
使用自制软件安装以下依赖项:
brew install pkg-config cmake doxygen nasm yasm
安装pip3/python3(如果你还没有)和它的依赖:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
pip3 install pystache
pip3 install six
递归克隆最新的 Linphone SDK 及其依赖项
git clone --recursive https://gitlab.linphone.org/BC/public/linphone-sdk
制作并设置构建目录(-DENABLE_VCARD=OFF
是这里的关键):
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_VCARD=OFF ..
cmake --build .
Xcode 整合
(如果构建成功,希望如此)
- 在您的构建文件夹中,进入您的
linphone-sdk/desktop
文件夹
- 您应该会看到几个不同的文件夹,但最重要的是
Frameworks
和 share
- 将
Frameworks
和 share
文件夹添加到您的 Xcode 项目中,并选中以下选项:
- 如果您使用 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"
在您的应用程序目标的 Frameworks, Libraries, and Embedded Content
部分,每个框架都应该是“嵌入并签名”。
尝试在 Swift 文件中编译和访问 Core
、Factory
等...它应该可以工作,如果没有,请评论下面,我会尽力帮助你!
我正在尝试将 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
使用自制软件安装以下依赖项:
brew install pkg-config cmake doxygen nasm yasm
安装pip3/python3(如果你还没有)和它的依赖:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py pip3 install pystache pip3 install six
递归克隆最新的 Linphone SDK 及其依赖项
git clone --recursive https://gitlab.linphone.org/BC/public/linphone-sdk
制作并设置构建目录(
-DENABLE_VCARD=OFF
是这里的关键):mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_VCARD=OFF .. cmake --build .
Xcode 整合
(如果构建成功,希望如此)
- 在您的构建文件夹中,进入您的
linphone-sdk/desktop
文件夹 - 您应该会看到几个不同的文件夹,但最重要的是
Frameworks
和share
- 将
Frameworks
和share
文件夹添加到您的 Xcode 项目中,并选中以下选项:
- 如果您使用 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"
在您的应用程序目标的
Frameworks, Libraries, and Embedded Content
部分,每个框架都应该是“嵌入并签名”。尝试在 Swift 文件中编译和访问
Core
、Factory
等...它应该可以工作,如果没有,请评论下面,我会尽力帮助你!