使用MonoTouch 4.0.1尝试使用“LLVM优化编译器”开关来发布iPhone版本时,我得到了“编译退出代码134”。
我根本没有从构建输出窗口获得太多信息 - 只是:
“使用代码134退出编译,命令:” MONO_PATH =(snip)/bin/iPhone/Release/LSiOS.app / Developer / MonoTouch / usr / bin / arm-darwin-mono --llvm --aot = mtriple = armv7-darwin,nimt-trampolines = 2048,full,静态,asmonly,NODEBUG,LLVM路径= /开发/的MonoTouch / LLVM /斌/,OUTFILE =在/ var /文件夹/ 03 / 033pAAGuHgGkIy4CorbVV ++++ TI / -Tmp- / tmp38107451.tmp / Newtonsoft.Json.MonoTouch。 dll.7.s“(snip)/bin/iPhone/Release/LSiOS.app/Newtonsoft.Json.MonoTouch.dll” Mono Ahead of Time编译器 - 编译程序集(snip)/mscorlib.dll
奇怪的是,在早期的命令行中,arm-darwin-mono命令行中提到的DLL与编译的内容之间存在关联,但在这种情况下,它表示“mscorlib.dll”。
有什么想法吗?
答案 0 :(得分:2)
我发现了一些案例(谷歌搜索和来自bugzilla.xamarin.com),其中错误代码134与Mono.Linker过于激进(删除所需的东西)有关。
通过关闭链接器很容易确认,即链接器选项中的“不链接”。如果构建有效,那么您可以尝试隔离链接器出错的程序集。
E.g。在mtouch额外参数中添加“ - linkskip = mscorlib ”并重新启用链接。这将链接除您选择的程序集(示例中的mscorlib)之外的所有内容(全部链接)或所有SDK(链接SDK程序集)。这只是一种解决方法,应填写错误报告,以便正确修复问题(并获得所有链接器优势)。
但是请注意,还有其他问题共享相同的错误代码,例如: http://ios.xamarin.com/Documentation/Troubleshoot#Error_134.3a_mtouch_failed_with_the_following_message.3a
YMMV
答案 1 :(得分:1)
mtouch并行执行其本机构建,因此日志可能会令人困惑,例如:你可以看到一些汇编X输出,然后是一些汇编Y输出。
阅读完整日志可能有助于您(或我们)查明问题。
答案 2 :(得分:1)
我有完全相同的问题Scolestock。我的应用程序将构建正常,直到我启用llvm,然后在尝试为应用程序本身构建7s时,“编译退出代码134,命令”。
我很高兴地说,在经过两天艰苦地将我的应用程序削减到核心问题之后,我能够将问题与嵌入式词典的使用隔离开来,例如:
Dictionary<enum, Dictionary<enum, value>>
我能够通过为嵌入式字典定义一个类并使用它来解决这个问题:
public class MyDefinition : Dictionary<enum, value>
{
}
...
public Dictionary<enum, MyDefinition>
不确定这是否会对你有所帮助,但希望它能帮助那些决定使用嵌入式词典并遇到同样问题的穷人。