iOS 上的 PJSIP,"undeclared type `pj_thread_t`" 的编译器错误
PJSIP on iOS, compiler error of "undeclared type `pj_thread_t`"
我构建了 PJSIP 2.7.1 并将其集成到一个 iOS 应用程序中,用 Swift 编写。一切正常所以我相信它是以正确的方式构建的,所有库和 headers 也都在正确的位置,直到有一天我试图从外部线程调用库函数所以我不得不注册这个线程使用 pj_thread_register()
并声明一个 pj_thread_t
类型变量,编译器开始抱怨类型 pj_thread_t
未声明。
我发现 pj_thread_t
在 pj/types.h
中声明并在 pj/os_core_linux_kernel.c
中定义。 types.h
已经包含在 header 搜索路径中,我认为它应该可以工作。我想我一定在这里错过了什么。
我在 Swift 项目中遇到了同样的问题。我的解决方案是在 ObjC 中创建一种包装文件。 Swift 和 ObjC 以不同的方式处理内存。这就是为什么我的包装器效果很好。现在我可以在包装文件中调用 pj_thread_t
。
pjsip (C) --> MyWrapper file (ObjC) --> myProject' files (Swift)
MyProject-Bridging-Header.h 文件只包含一行:
#import "MyWrapper.h"
我构建了 PJSIP 2.7.1 并将其集成到一个 iOS 应用程序中,用 Swift 编写。一切正常所以我相信它是以正确的方式构建的,所有库和 headers 也都在正确的位置,直到有一天我试图从外部线程调用库函数所以我不得不注册这个线程使用 pj_thread_register()
并声明一个 pj_thread_t
类型变量,编译器开始抱怨类型 pj_thread_t
未声明。
我发现 pj_thread_t
在 pj/types.h
中声明并在 pj/os_core_linux_kernel.c
中定义。 types.h
已经包含在 header 搜索路径中,我认为它应该可以工作。我想我一定在这里错过了什么。
我在 Swift 项目中遇到了同样的问题。我的解决方案是在 ObjC 中创建一种包装文件。 Swift 和 ObjC 以不同的方式处理内存。这就是为什么我的包装器效果很好。现在我可以在包装文件中调用 pj_thread_t
。
pjsip (C) --> MyWrapper file (ObjC) --> myProject' files (Swift)
MyProject-Bridging-Header.h 文件只包含一行:
#import "MyWrapper.h"