3

我正在使用 RestKit 来使用 Web 服务。RestKit 工作正常,直到我尝试添加 libZSDK_API.a 库(这个库是通过网络或蓝牙管理斑马打印机)

一些教程表明了将 RestKit 添加到 iOS 项目的此步骤:

  • 添加“其他链接器标志”值 -ObjC

但是当我添加库时这个标志(-ObjC)会导致编译错误,当我删除这个标志时,iOS应用程序编译正确但是当我执行时应用程序崩溃了,因为项目没有 -ObjC 标志。

我收到此编译错误:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_Linea", referenced from:
      objc-class-ref in libZSDK_API.a(LineaBtPrinterConnection.o)
     (maybe you meant: _OBJC_CLASS_$_LineaBtPrinterConnection)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

2 回答 2

5

Zebra API 链接到另一个 API,用于通过 IPC Linea Sled 设备进行蓝牙通信。该LineaBtPrinterConnection库文件的链接 ( libdtdev.a)。通常,如果您不关心通过 sled 的 BT 通信,则不必链接该库,但由于您添加了该-ObjC标志,它正在加载该文件并查找该库。

如果将libdtdev.a库添加到项目中,该错误应该会消失。该库应包含在您从 Zebra 下载的“Demos”项目文件夹下。如果您需要实际使用雪橇,根据雪橇的固件版本,您可能需要来自 IPC 的新版本,如果您在他们的网站上注册为开发人员,就可以获得该版本。

于 2013-04-05T12:31:06.567 回答
1

我敢打赌,您的应用程序会为该设备成功构建。您看到的问题是当您为模拟器构建时(我可以说是因为它说“ not found for architecture i386”)。

你是如何构建“ libZSDK_API”的?从源头?如果是这样,请确保您也为模拟器构建它。如果没有,供应商需要i386在他们提供的 .a 文件中包含“”符号。

于 2013-04-03T20:55:08.450 回答