1

我使用类似于http://docs.xamarin.com/ios/tutorials/Working_with_Web_Services#Consuming_WCF_Services的 Silverlight SLSvcUtil.exe 工具在 Monotouch 上创建了一个 WCF 客户端。

在模拟器上一切正常,但是当我在 iPhone 4S 上启动它时出现错误:

在使用 --aot-only 运行时尝试 JIT 编译方法 '(wrapper delegate-begin-invoke) :begin_invoke_IAsyncResult_ this __TimeSpan_AsyncCallback_object (System.TimeSpan,System.AsyncCallback,object)'。

有任何想法吗?

4

2 回答 2

1

我已经从 monotouch 调用了一些 wcf 服务,而没有遇到任何这样的问题——所以它可以完成。

monotouch 中的 jit 错误通常表明链接器删除了某些内容,或者调用了某些虚拟抽象方法(至少在我最近的经验中)。

你能检查你真正的 iPhone 项目的链接器设置吗?如果您将其设置为 -nolink,问题是否会消失 - 请参阅http://docs.xamarin.com/ios/advanced_topics/linker

如果这确实有帮助,那么下一步就是查看 wcf 生成的文件 - 在这种情况下,您能否找到并发布更多关于回调方法的代码?

于 2012-05-07T15:21:11.610 回答
0

此类问题很少与链接器相关,如果签名是包装器则更少。但是,您可以通过 Stuart 的说明轻松确认这一点。

IMO 您可能会遇到 AOT 编译器无法预测所需代码的情况。混合泛型和值类型时会发生这种情况(并且您在生成的签名中有一个TimeSpan )。这将适用于模拟器(使用 JIT),但不适用于 AOT 应用程序。

解决此类问题的最佳方法是在http://bugzilla.xamarin.com上打开错误报告并附上允许我们复制问题的测试用例。

于 2012-05-08T13:36:20.010 回答