Xamarin - 无法再在设备上调试 - 错误MT5211

时间:2014-05-02 14:58:14

标签: ios xamarin.ios xamarin

在最近的升级之前,我可以在设备上进行调试。我现在得到以下错误:

Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_ZipArchiveDelegate", referenced from:
   objc-class-ref in registrar.armv7.o
  _OBJC_CLASS_$_MiniZip_ZipArchive_ZipArchive__ZipArchiveDelegate in registrar.armv7.o
"_OBJC_METACLASS_$_ZipArchiveDelegate", referenced from:
  _OBJC_METACLASS_$_MiniZip_ZipArchive_ZipArchive__ZipArchiveDelegate in registrar.armv7.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

error MT5211: Native linking failed, undefined Objective-C class: _OBJC_CLASS_$_ZipArchiveDelegate. If '_OBJC_CLASS_$_ZipArchiveDelegate' is a protocol from a third-party binding, please check that it has the [Protocol] attribute in its api definition file, otherwise verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
error MT5210: Native linking failed, undefined symbol: _OBJC_METACLASS_$_ZipArchiveDelegate. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
error MT5202: Native linking failed. Please review the build log.

我已经清理并重建但无济于事。有什么想法吗?

2 个答案:

答案 0 :(得分:9)

事实证明,此错误是由新默认静态注册器的严格性提高引起的:

您可以通过请求Xamarin.iOS使用legacy注册商暂时解决此问题。为此,请在“项目选项 - > iOS构建 - >其他mtouch参数”下添加“--registrar:legacy”。

组件团队还联系了ZipArchive组件的作者,让他们了解新注册商的问题,但他们尚未回复。如果他们不尽快提供更新,您可以查看转换为Xamarin组件团队[1]编写的同一个库的开源绑定。这种绑定的一个注意事项是方法和类名称可能与ZipArchive组件中的方法和类名称不同,命名空间肯定是不同的。因此,您需要相应地更新应用中的名称。

[1] https://github.com/mono/monotouch-bindings/tree/master/ZipArchive

答案 1 :(得分:1)

有完全相同的问题。但是在zipArchive和SDWebImage上都有。 卸载 - 重新安装xamarin。没有帮助。

从头开始创建解决方案,添加了zipArchive并添加到using部分。 该项目不是为设备构建的。但建立模拟器很好。

通过电子邮件发送Xamarin支持帮助。