如何在Swift项目中集成PjSip?

4

输入图像描述我想在我的项目中集成PJSIP,我正在按照网站(https://trac.pjsip.org/repos/wiki/Getting-Started/iPhone)上的步骤进行。我能够按照他们的要求创建一个项目。但是现在我想将它集成到我的Swift项目中。有人可以指导我如何将PJSIP库和其他代码集成到我的代码中吗?目前,我在我的Swift对象中遇到了链接器错误。


你遇到了什么样的链接错误?据我所知,你可以将所有的头文件桥接到Swift中,然后调用C函数。如果不行,就在Obj-C中编写自己的包装方法,并在Swift中调用它们。这些低级别的C项目在仅使用Swift的项目中可能需要帮助。 - Leon
1
好的,我已经添加了终端生成的库,就像上面提供的网站一样。但是我卡住了, - Vijayvir Sing Pantlia
你是在模拟器上运行吗?因为看起来这个库并不适用于你正在运行的接口。如果可以的话,尝试在实际设备上运行它。 - Leon
问题太广泛,您需要更具体地描述问题。包括:1. PJSIP的版本,2.构建时传递的标志,3.使用的其他库,如OpenSSL、OpenH264等,4.您构建的架构,5.测试应用程序的设备,6.导入库和头文件的过程,7.其他逐步设置。我刚刚使用PJSIP 2.7.2构建了我的Swift项目。 - Sergey Z
你能在Swift项目中实现它吗?我也想将pjsip集成到我的应用程序中。任何帮助都将不胜感激。 - Ratneshwar Singh
@RatneshwarSingh 请查看我下方的答案 - meaning-matters
1个回答

3

这是我记录的一个使用PJSIP的项目,以下内容应该涵盖了设置新Xcode项目的所有步骤:

- Download from https://www.pjsip.org/download.htm

- Info:
    https://trac.pjsip.org/repos/wiki/Getting-Started/iPhone
    https://onmyway133.com/posts/learning-voip-rtp-and-sip-aka-awesome-pjsip/
    
- Create ./pjproject-2.10/pjlib/include/pj/config_site.h:
    #define PJ_CONFIG_IPHONE 1
    #define PJMEDIA_HAS_VIDEO 1
    #define PJMEDIA_HAS_VID_TOOLBOX_CODEC 1

    #define PJ_HAS_SSL_SOCK 1
    #define PJ_SSL_SOCK_IMP PJ_SSL_SOCK_IMP_APPLE

    #include <pj/config_site_sample.h>

- Create ./pjproject-2.10/user.mak:
    export LDFLAGS += -framework Network -framework Security -framework VideoToolbox

- In ./pjproject-2.10 run:
    $ export MIN_IOS="-miphoneos-version-min=13.0"
    $ ./configure-iphone
    $ make dep && make clean && make

- Add Network, Security, and VideoToolbox (for H264) iOS frameworks to Xcode project.

- Create <your app name>-Bridging-Header.h and mark it as Objective-C Bridging Header in Build Settings:
    #import "pjsua.h"
    ...

- Add PJ_AUTOCONF to Build Settings > Preprocessor Macros

- Add/Drag the .a files from the following directories to General > Frameworks, Libraries, and Embedded Content:
    ./pjproject-2.10/pjlib/lib/
    ./pjproject-2.10/pjlib-util/lib/
    ./pjproject-2.10/pjmedia/lib/
    ./pjproject-2.10/pjnath/lib/
    ./pjproject-2.10/pjsip/lib/

- Add the following directories to Build Settings > Header Search Paths (use relative path from app's main directory):
    ./pjproject-2.10/pjlib/include/
    ./pjproject-2.10/pjlib-util/include/
    ./pjproject-2.10/pjmedia/include/
    ./pjproject-2.10/pjnath/include/
    ./pjproject-2.10/pjsip/include/

1
谢谢您,只是需要注意。在“构建设置>库搜索路径”下,也要记得添加/third_party/lib路径。例如:"$(SRCROOT)/SIP_test_new/PJSua2/pjsip/third_party/lib" - Vinh Nguyen
很好的补充@VinhNguyen; 我展示的东西必须针对您使用的所有库重复。 - meaning-matters
@SBK 如何组织文件取决于您。 - meaning-matters
我集成了Pjsip,但是呼出电话不工作,只有音频播放,用户在服务器端不可用,但是来自同一服务器的呼入电话可以正常工作。请帮忙解决。 - SBK
@SBK 发布一个带有详细信息的问题。但是我可以事先告诉你,你这种问题很难通过SO获得帮助,因为有许多可能的原因通常需要实时访问才能解决。最好的方法可能是在PJSIP论坛上提问。祝你好运! - meaning-matters
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接