静态框架与 - " ObjC"

时间:2014-07-27 10:38:25

标签: objective-c xcode compiler-construction linker

我的项目已经导入了几个第三方框架,并且许多要求" -ObjC"建筑设置中的优化 - >链接 - >其他链接器标志选项卡。

目前,我正在尝试添加另一个静态框架(OSMap SDK),并且优化会导致架构i386"未定义的符号。错误。

Undefined symbols for architecture i386:
"_BZ2_bzBuffToBuffDecompress", referenced from:
    -[OSTerrain getDataLoadedForEasting:northing:] in OSMap(OSTerrain.o)
"_OBJC_CLASS_$_RMMapTiledLayerView", referenced from:
    objc-class-ref in OSMap(RMMapView.o)
"_OBJC_CLASS_$_RMMarker", referenced from:
    objc-class-ref in OSMap(RMMapOverlayView.o)
"_OBJC_CLASS_$_RMOpenStreetMapSource", referenced from
    objc-class-ref in OSMap(RMMapView.o)
"_OBJC_CLASS_$_RMQuadTree", referenced from:
    objc-class-ref in OSMap(RMMapView.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我确信我添加了QuartzCore.framework和Git上指定的其他框架。 据我所知,框架中没有.m文件。

有没有办法使用静态框架,同时仍然将优化功能保留在其他链接器标志下?

修改

  1. libbz.dylib有助于消除第一个错误。
  2. 现在其他四个错误仍然存​​在。我的猜测是他们应该在路线我的图书馆,并且不知何故失踪了。如果我导入route-me的库,虽然这可以消除未定义的符号错误,但它会产生更多重复符号的新错误。

1 个答案:

答案 0 :(得分:0)

搜索缺失的符号表示您需要链接libbzip2和来自github的名为“route-me”的内容。

如果你有这些,你可能没有正确的架构。你标记了你的问题iOS,但错误是关于i386构建的,也许你的目标是没有支持它的库的模拟器。