【问题标题】:PJSIP on iOS, compiler error of "undeclared type `pj_thread_t`"iOS上的PJSIP,“未声明类型`pj_thread_t`”的编译器错误
【发布时间】:2018-02-10 19:53:06
【问题描述】:

我已经构建了 PJSIP 2.7.1,并将其集成到一个用 Swift 编写的 iOS 应用程序中。一切正常,所以我相信它是以正确的方式构建的,所有的库和头文件也在正确的位置,直到有一天我试图从外部线程调用库函数,所以我不得不使用pj_thread_register() 注册这个线程和声明了pj_thread_t 类型变量,编译器开始抱怨pj_thread_t 类型未声明。

我发现pj_thread_t 在pj/types.h 中声明并在pj/os_core_linux_kernel.c 中定义。 types.h 已经包含在标题搜索路径中,我认为它应该可以工作。我想我一定在这里错过了什么。

【问题讨论】:

  • #import <pjsua-lib/pjsua.h> 是目前我的桥接头文件中唯一的内容。

标签: ios swift compiler-errors pjsip


【解决方案1】:

我在我的 Swift 项目中遇到了同样的问题。我的解决方案是在 ObjC 中创建一种包装文件。 Swift 和 ObjC 以不同的方式处理内存。这就是为什么我的包装器效果很好。现在我可以在我的包装文件中调用pj_thread_t。

pjsip (C) --> MyWrapper file (ObjC) --> myProject' files (Swift)

MyProject-Bridging-Header.h 文件只包含一行:

#import "MyWrapper.h"

【讨论】:

  • 感谢弗拉基米尔,这对我来说听起来很有意义。现在我将 pjsip lib 函数调用放在 swift 主线程中以绕过。我会尝试你的方法来解决它。
猜你喜欢
  • 2018-05-21
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多