无法再链接嵌入式MonoTouch iPhone应用程序

无法再链接嵌入式MonoTouch iPhone应用程序,iphone,xcode,linker,mono,xamarin.ios,Iphone,Xcode,Linker,Mono,Xamarin.ios,我正在尝试将Mono库和MonoTouch嵌入到iPhone应用程序中。我让一切正常,然后我的机器上发生了一些事情(MonoTouch更新?),现在我无法在瞄准设备时链接应用程序。对于模拟器来说,一切都很好,但我在瞄准设备时收到了上千条警告和一些错误。它试图链接的Mono库是错误的体系结构 ld: warning: ARM function mono_aot_version not 4-byte aligned ld: warning: ARM function mono_aot_full_ao

我正在尝试将Mono库和MonoTouch嵌入到iPhone应用程序中。我让一切正常,然后我的机器上发生了一些事情(MonoTouch更新?),现在我无法在瞄准设备时链接应用程序。对于模拟器来说,一切都很好,但我在瞄准设备时收到了上千条警告和一些错误。它试图链接的Mono库是错误的体系结构

ld: warning: ARM function mono_aot_version not 4-byte aligned
ld: warning: ARM function mono_aot_full_aot not 4-byte aligned
ld: warning: ARM function mono_runtime_version not 4-byte aligned
ld: warning: ARM function mono_aot_assembly_name not 4-byte aligned
ld: warning: ARM function name_0 not 4-byte aligned
ld: warning: ARM function name_1 not 4-byte aligned
ld: warning: ARM function name_2 not 4-byte aligned
...
... lots of these warnings
...
ld: warning: ARM function name_53 not 4-byte aligned
ld: warning: ARM function name_54 not 4-byte aligned
ld: warning: ARM function name_55 not 4-byte aligned
ld: warning: ARM function name_56 not 4-byte aligned
ld: warning: ignoring file /Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/lib/libmono.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file /Developer/MonoTouch/SDKs/MonoTouch.iphoneos.sdk/usr/lib/libmonotouch.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7:
  "_monotouch_setup_classmap", referenced from:
      _monotouch_create_classes in registrar.o
  "_mono_object_new", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_aot_register_module", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_jit_init", referenced from:
  -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_runtime_object_init", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_assembly_get_image", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_assembly_open", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_jit_set_aot_only", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
  "_mono_class_from_name", referenced from:
      -[CalcEvaluator init] in CalcEvaluator.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
我猜这与MonoTouch没有被激活有关。我已尝试重新安装MonoTouch并重新激活MonoTouch。两者对错误都没有任何影响

其他链接器标志

-ObjC -L/Developer/MonoTouch/SDKs/MonoTouch.$(PLATFORM_NAME).sdk/usr/lib -lmono -lmonotouch -all_load
单声道版本

$ mono -V
Mono JIT compiler version 2.6.7 (tarball Tue Aug 24 16:33:27 MDT 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS:           normal
GC:            Included Boehm (with typed GC)
SIGSEGV:       normal
Notification:  Thread + polling
Architecture:  x86
Disabled:      none
$ /Developer/MonoTouch/usr/bin/mtouch --version
mtouch 3.2.6.9797
单触式版本

$ mono -V
Mono JIT compiler version 2.6.7 (tarball Tue Aug 24 16:33:27 MDT 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS:           normal
GC:            Included Boehm (with typed GC)
SIGSEGV:       normal
Notification:  Thread + polling
Architecture:  x86
Disabled:      none
$ /Developer/MonoTouch/usr/bin/mtouch --version
mtouch 3.2.6.9797

我可以在另一台机器上构建同一个项目,并按照预期进行构建。非常感谢您提供的任何帮助。

4.3 SDK不允许将armv6库链接到armv7应用程序。要么将应用程序更改为仅针对armv6,要么升级到MonoTouch 4。

如果从架构设置中删除armv7,则不会出现错误,但仍会出现“未对齐4字节”的警告。你知道是什么引起了这些警告吗?这是一个由我们在monotouch 3中如何发射组件引起的警告,它是无害的。如果你不想看到它升级到monotouch 4,我已经升级到monotouch 4了。它现在生成额外的*.6.s文件。我猜这些是为armv6准备的?我能用这些做些什么吗?我仍然只在针对设备时收到警告。*.6.s用于armv6,如果您将--fat传递给mtouch,您还将得到*.7.s文件,您需要针对每个目标有条件地编译它们。MT4不再显示对齐警告,因此,如果您看到它们,您可能有旧文件。正如我所说的,它们是无害的警告。现在,当我为模拟器构建时,我得到了数千个“没有这样的指令”错误。包括我能够为针对该设备的armv6和armv7编译的*.6.s文件。我需要做什么才能让它为模拟器编译?