添加libZSDK_API.a时,Restkit的-ObjC标志会导致编译错误

时间:2013-04-03 20:42:26

标签: iphone ios ios6 zebra-printers

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

几个教程指出将RestKit添加到iOS项目的步骤:

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

但是当我添加库时,这个标志(-ObjC)会导致编译错误,当我删除此标志时,iOS应用程序编译正确,但是当我执行应用程序时崩溃,因为Project没有-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)

2 个答案:

答案 0 :(得分:5)

Zebra API通过IPC Linea Sled设备链接到另一个用于蓝牙通信的API。 LineaBtPrinterConnection指向该库文件(libdtdev.a)的链接。通常情况下,如果你不关心通过雪橇的BT通信,你不必链接该库,但是因为你要添加-ObjC标志,它正在加载该文件并寻找该库。

如果将libdtdev.a库添加到项目中,则该错误应该消失。该库应该包含在Zebra的“Demos”项目文件夹下的下载中。如果您需要实际使用底座,根据底座的固件版本,您可能需要IPC的新版本,如果sign up as a developer on their site.

,您可以获得该版本

答案 1 :(得分:1)

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

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