在试图集成SKMaps框架时获取这些错误
Undefined symbols for architecture x86_64:
"CRouteTestManager::calculateRoute(NGRouteInput const&, std::__1::shared_ptr<CRoute>&)", referenced from:
PoiTrackerTest::createRoute() in SKMaps(PoiTrackerTest.o)
"_gpTestRoutesManager", referenced from:
PoiTrackerTest::createRoute() in SKMaps(PoiTrackerTest.o)
createNavigationObject(int) in SKMaps(NavigationTest.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)请帮我解决这个错误。
Environment :
Xcode 6.3.1, Mac OSX 10.10.3
Deployment Target iOS7.0支持斯威夫特
我遵循这个指南:http://developer.skobbler.com/getting-started/ios
还添加了CoreMotion.framework,因为还存在与该框架相关的链接错误。
发布于 2015-09-10 16:08:07
链接器误差的原因
这似乎是链接器标志-all_load的结果,它可能是通过CocoaPod添加到项目中的。在很少的情况下,只有定义了类别的静态库才需要此标志。否则,它可以安全地从您的构建中删除。见这里的讨论:
从该讨论的注释部分的链接中可以看到,这个以前需要-all_load的bug已经从XCode 4中修复了。
Objective-C categories in static library
可能解释
这个框架中定义了大量测试,但是它们的依赖项不包含在框架中。当链接器被迫解析和链接所有依赖项时,它会出错,因为它找不到它们。基本上,应该清理库,使其不包含这些不必要的符号。目前的工作是删除-all_load。
发布于 2016-01-21 11:08:07
面对同样的问题。删除-all_load标志没有帮助,所以我继续研究并找到了一个解决方案:
尽管Skobbler声明需要链接libc++库,但实际上您需要链接libstdc++.6库。请注意,链接libstdc++不会有帮助。
P.S.Xcode 6.4,iOS SDK 8.4
https://stackoverflow.com/questions/30230976
复制相似问题