我得到這個錯誤爲我的項目之一使用靜態庫。該項目在iOS設備上運行良好。但不是在模擬器中。靜態庫不是我的,所以我不能爲i386重新編譯它。 但這是iPhone的硬件驅動程序。所以在模擬器中運行時我真的不需要這個庫。就好像附件與設備一起存在,那麼應用程序將具有不同的流程。iphone缺少必需的體系結構i386
所以我必須保持對這個文件的引用。但只會在iOS設備上需要。在模擬器中運行應用程序以用於UI和其他測試目的時不需要。
我該如何避免這個錯誤?無論如何要配置目標或方案以避免在模擬器中運行時的目標文件/ lib?
ld: warning: ignoring file
/Framework/iSmartSDK/libiSmartSDK_Lib.a, missing required architecture i386 in file
/Framework/iSmartSDK/libiSmartSDK_Lib.a (2 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_iSmart", referenced from:
objc-class-ref in SmartCardReaderVC.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
然後,我必須有很多定義#在我的代碼會讓它變得凌亂。有沒有其他方式像聲明一個'弱'引用類型或'可選'庫? – karim
IIRC不適用於靜態庫,否。爲動態庫和框架,但不是.a文件 –
其唯一在1文件AFAICS .. #ifdef整個文件,也許創建一個SmartReaderVC存根 –