1

您好我在我的应用程序中使用 OperTok SDK 进行视频聊天。在我的应用程序中一切正常。但是当我尝试在 64 位设备/模拟器中运行它时 - 构建失败并出现以下错误报告。

Undefined symbols for architecture i386:
 "_OBJC_CLASS_$_OTPublisher", referenced from:
  objc-class-ref in Instr_Video_call.o
  objc-class-ref in Student_Video_call.o
"_OBJC_CLASS_$_OTSession", referenced from:
  objc-class-ref in Instr_Video_call.o
  objc-class-ref in Student_Video_call.o
"_OBJC_CLASS_$_OTSubscriber", referenced from:
  objc-class-ref in Instr_Video_call.o
  objc-class-ref in Student_Video_call.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的架构设置是 -

   ARCHITECTURES -  standard architectures armv7, armv7s, arm64
   VALID ARCHITECTURES -  armv7, armv7s, arm64

但是当我将这些更改为仅 ARMV7 时 - 它可以工作(32 位设备/模拟器)

可能是什么问题,opentok 不支持 64 位设备吗?请帮助我,在此先感谢。

4

3 回答 3

1

最近发布了支持 64 位的 OpenTok 2.4.0: https ://tokbox.com/opentok/libraries/client/ios/

于 2015-02-08T02:17:34.580 回答
1

您可以使用 lipo 检查库是否包含 64 位代码。结果表明它是一个 32 位的框架。

$ lipo -info OpenTok.framework/OpenTok 
Architectures in the fat file: OpenTok.framework/OpenTok are: armv7 armv7s i386

您可以做的是更改Build Active Architecture only项目NO设置和目标设置,这样 xcode 将构建设置中包含的所有架构,但会损失一些性能,因为 arm64 是 64 位 iPhone 的更好选择。

于 2014-11-13T12:18:24.113 回答
0

由于启用位码,您可能会收到此错误。尝试设置启用位码“否”

转到目标 -> 构建设置 -> 搜索“启用位码” -> 设置为“否”

这解决了我的问题。

于 2016-01-12T06:04:45.047 回答