无法编译生成的注册码 - MT4109

Posted

技术标签:

【中文标题】无法编译生成的注册码 - MT4109【英文标题】:Failed to compile the generated registrar code - MT4109 【发布时间】:2016-11-14 12:09:45 【问题描述】:

ios 中构建 Xamarin.Forms 应用程序,我收到以下错误

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.Common.targets (_CompileToNative target) ->

MTOUCH: error MT4109: Failed to compile the generated registrar code. Please file a bug report at http://bugzilla.xamarin.com

 6 Warning(s)
 1 Error(s)

经过时间 00:00:51.5040280

obj/iPhone/Debug/build-iphone8.1-10.1.1/mtouch-cache/registrar.m:6806:74: error: expected a type
            -(BOOL) gestureRecognizer:(UIGestureRecognizer *)p0 shouldReceivePress:(UIPress *)p1;
                                                                                    ^ 
    /obj/iPhone/Debug/build-iphone8.1-10.1.1/mtouch-cache/registrar.m:6848:74: error: expected a type
            -(BOOL) gestureRecognizer:(UIGestureRecognizer *)p0 shouldReceivePress:(UIPress *)p1
                                                                                    ^ 
    obj/iPhone/Debug/build-iphone8.1-10.1.1/mtouch-cache/registrar.m:6851:10: error: no matching function for call to 'native_to_managed_trampoline_37'
                    return native_to_managed_trampoline_37 (self, _cmd, &managed_method, p0, p1, "UIKit.UIGestureRecognizer, Xamarin.iOS", "UIKit.UIPress, Xamarin.iOS", "UIKit.UIGestureRecognizer+_UIGestureRecognizerDelegate, Xamarin.iOS", "ShouldReceivePress");

obj/iPhone/Debug/build-iphone8.1-10.1.1/mtouch-cache/registrar.m:1705:13: note: candidate function not viable: no known conversion from 'id' to 'int *' for 5th argument
    static BOOL native_to_managed_trampoline_37 (id self, SEL _cmd, MonoMethod **managed_method_ptr, UIGestureRecognizer * p0, UIPress * p1, const char *r0, const char *r1, const char *r2, const char *r3)
                ^ 
    4 errors generated.

只有在尝试部署到物理设备时才会发生这种情况,但在模拟器上一切正常。

【问题讨论】:

【参考方案1】:

我在 Mac 的虚拟机中遇到了与 vs 2017 相同的问题。是因为 Xcode 11.0 的自动更新,Xamarin.ios 版本的 vs 2017 不兼容 Xcode 11.0,

首先我更新了 vs 2017--> vs 2019 和 Visual Studio for Mac 也更新到最新版本,之后问题就消失了?

【讨论】:

【参考方案2】:

我今天遇到了同样的错误。我之前有 XCode 7.0.1,看起来 UIPress 类是在 iOS 9.2 之后引入的,而 XCode 7.0.1 没有。所以我刚刚升级了我的 XCode,它解决了这个问题。

【讨论】:

以上是关于无法编译生成的注册码 - MT4109的主要内容,如果未能解决你的问题,请参考以下文章

安装了jdk ,配置了环境变量,都正确,为啥无法识别Java文件?

编译skia静态库时,图片解码库无法注册的问题

WPS之前正用着,现在公式编译器打不开,而且提示无法创建对象,请确认对象已经在系统注册表中注册。

vs2008编译成功,生成mt.exe时出错

Visual Studio 2015 无法生成在 Windows XP 上成功注册的 ATL Dll

WPS之前正用着,现在公式编译器打不开,而且提示无法创建对象,请确认对象已经在系统注册表中注册。