【发布时间】:2016-03-22 13:25:06
【问题描述】:
我有一个快速的基础项目 iPhone 应用程序。我想在其中使用 Zoiper SDK。 我从他们那里得到的是静态库(.a 文件):
- libcrypto.a
- libsipwrapper.a
- libssl.a
可能用 Objective-C 编写。
还有外部头文件
- wrapper_defs.h,
- wrapper_cbk.h,
- wrapper.h
用 Objective-C 编写。
我尝试像这样添加桥接头:
#ifndef ZoiperTest_Bridging_Header_h
#define ZoiperTest_Bridging_Header_h
#import "include/wrapper_defs.h"
#import "include/wrapper_cbk.h"
#import "include/wrapper.h"
#endif /* ZoiperTest_Bridging_Header_h */
但这会返回很多错误(无法识别 wrapper.h 中使用的类型)
我是否必须将库 .a 文件也包含到桥接头中? 确切的语法是什么?
我尝试将#import 添加到桥头中,但这给了我找不到文件的错误。
【问题讨论】:
-
.a 文件是二进制文件,绝对不属于头文件(或在编译阶段构建的任何其他内容)。您最好尝试找出 wrapper.h 错误。
-
确保将二进制文件和标头添加到项目中并“复制捆绑资源”。只是
#import "wrapper.h"工作而不是"include/wrapper.h"? -
@Phillip Mills,所以我不必将 .a 文件包含到桥接头中?我已经尝试过了,奇怪的是,现在我在其中一个标题中得到了“参数 size_t 的重新定义”。我没有使用objective-c的经验,所以我不知道这意味着什么。现在将谷歌它。
-
@JAL 我已经检查了那部分,我试过没有文件夹,它给出了相同的结果。
-
您能否提供几个错误示例以及错误所指的 *.h 文件中的代码 sn-ps?您确定标题中的代码不是 C++ 吗?如果是,那么您将不得不在 C 或 Objective-C++ 中围绕 C++ 代码编写一个包装器。而且,正如其他人所说的那样,.a 文件绝对不属于桥接头。
标签: ios objective-c xcode swift static-libraries