Pod安装期间Crashlytics错误“架构x86_64的未定义符号”

时间:2016-05-12 10:56:13

标签: objective-c xcode crashlytics

我正在使用Google Analytics,在运行pod后,会显示这些错误。我不明白为什么; project也有Crashlytics框架,但只有在添加Google Analytics后才会显示这些错误。

RewriteEngine On
RewriteBase "/"
RewriteCond %{HTTP_HOST} www.olddomain1.com
RewriteCond %{QUERY_STRING} cat=(.+)
RewriteRule shop/home.php http://www.newdomain2.com/cat=%1? [R=301,L]

2 个答案:

答案 0 :(得分:33)

对我来说,我有类似的问题,同时将其整合到基于cordova的应用程序。

您看到的特定错误是因为没有链接libc ++。 Crashlytics 3.0需要libc ++(不是libstdc ++),libz,SystemConfiguration.framework和Security.framework。应该通过SDK中的模块定义自动处理链接。如果您不使用模块,我们的指导安装应该插入所需的链接库。在这种情况下,这显然不起作用。

解决方案#1:开始使用模块。它们可以缩短构建时间,尽可能快速地实现互操作性,并且通常很有用。

解决方案#2:手动链接libc ++,libz,SystemConfiguration.framework和Security.framework。 解决方案#2 - 为我工作 这个答案是由{mattie

提出的Ref link

答案 1 :(得分:0)

在Xcode中,Santosh的答案对我不起作用,但我只是将.m文件更改为.mm文件。

这是.mm和&之间的区别。 .M

使用.mm超过.m的正常缺点是#34;正常" Objective-C是Objective-C ++的编译时间明显更高。这是因为C ++编译器比C编译器花费更长的时间。使用Xcode 3.2及更高版本,Objective-C代码可以使用Clang前端工具链来显着加快Objective-C / C编译时间。由于Clang还不支持Objective-C ++ / C ++,这进一步扩大了两者之间编译时间的差距。

更好的策略是默认使用.m。如果您需要在开发后期使用Objective-C ++,则重命名文件以使用.mm扩展名没有任何害处。如果是这样,那么在XCode中,项目将自动更新以使用新命名的文件。

当然,一旦您尝试在运行时比较Objective-C ++与Objective-C性能,所有标准警告都适用。由于Objective-C ++是C ++超集,而Objective-C是C超集,因此您处理两种不同的语言,每种语言在运行时都具有性能权衡。鉴于您完全使用Objective-X,您可能正在编写用户级应用程序(而不是系统级应用程序),C和C ++之间的性能差异可能完全取决于您的编码效率能力每种语言的算法。如果您是C ++开发人员,那么您的代码可能会比C语言更好,反之亦然。因此,与往常一样,使用适当的工具来完成工作。

供参考,您可能也对此答案感兴趣:适用于iPhone的C vs C ++(Objective-C vs Objective-C ++)

更新2012年2月17日从Xcode 4.0(使用LLVM 3.0)开始,Clang支持Objective-C ++。即使是C ++ 11支持也非常强大。

Objective-C, .m / .mm performance difference?