我正在使用RestKit来使用Web服务。 RestKit工作正常,直到我尝试添加libZSDK_API.a库(此库是通过网络或蓝牙管理斑马打印机)
几个教程指出将RestKit添加到iOS项目的步骤:
但是当我添加库时,这个标志(-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)
答案 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
”的符号。