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

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

几个教程指出这个步骤将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) 

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

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

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

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

Interesting Posts