1

Xamarin.iOS を使用して iPhone 用のデバッグ モードで一般的なライブラリ ICSharpCode.SharpZipLib.dll をビルドしようとすると、すべて正常に動作します。リリース モードに切り替えると、次のエラーが表示されます。

error MT3001: Could not AOT the assembly

詳細出力をオンにすると、次のようになります。

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc      -miphoneos-version-min=4.3 -arch armv7  -std=c99 -I/Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -c /var/folders/kn/1j5jxvv131zcyqmgy3yj_xfw0000gn/T/tmp13a8fd89.tmp/System.Data.dll.armv7.s -o /var/folders/kn/1j5jxvv131zcyqmgy3yj_xfw0000gn/T/tmp13a8fd89.tmp/System.Data.dll.armv7.o
error MT3001: Could not AOT the assembly '.../bin/iPhone/Release/ICSharpCode.SharpZipLib.dll'
  at MTouch.GetObjectFileForAssembly (System.String assemblyName, Abi abi) [0x00000] in <filename unknown>:0 
  at MTouch+<CompileAssemblies>c__AnonStoreyB.<>m__E (System.String s) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Parallel+<ForEach>c__AnonStorey36`1[System.String].<>m__34 (System.String e, System.Threading.Tasks.ParallelLoopState s, System.Object l) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Parallel+<ForEach>c__AnonStorey35`2[System.String,System.Object].<>m__32 () [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.TaskActionInvoker+ActionInvoke.Invoke (System.Threading.Tasks.Task owner, System.Object state, System.Threading.Tasks.Task context) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.InnerInvoke () [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.ThreadStart () [0x00000] in <filename unknown>:0 

これは、LLVM をオンにし、SGen をオンにした状態です。この投稿 ( Mono ARMv7 and LLVM )で提案されているように SGen をオフにすると、まったく同じ MT3001 エラーが発生します。

LLVMをオフにすると、再び機能します。問題は、LLVM が必要なことです。

LLVM をオフにせずに、この共通ライブラリを Monotouch/Xamarin.iOS でビルドするにはどうすればよいですか? どんな助けでも大歓迎です。

4

0 に答える 0