ios - 升级后MonoTouch链接库编译问题

标签 ios xcode xamarin.ios monodevelop linker-errors

我昨天升级到了最新的 MonoTouch/MonoDevelop 版本,现在我的应用程序在编译时抛出以下错误:

error MT5201: Native linking failed. Please review user flags provided to gcc: "-lz" "-lxml2"

我在构建中使用以下内容,因为我使用的链接库需要 libz.dylib。 -gcc_flags“-lz -lxml2”

我当前的环境是:

MonoDevelop 3.0.5
Installation UUID: 5022d668-f236-4223-a074-6c050535bd3f
Runtime:
    Mono 2.10.9 (tarball)
    GTK 2.24.10
    GTK# (2.12.0.0)
    Package version: 210090011
Apple Developer Tools:
     Xcode 4.5.2 (1847)
     Build 4G2008a
Monotouch: 6.0.7
Mono for Android: Not Installed

Build information:
    Release ID: 30005000
    Git revision: e159cf083bd327933166819d94245298898d6e3d
    Build date: 2012-10-24 16:43:06+0000
    Xamarin addins: eea2ed91ae8dd242b281d5ec8f6c2fbc63b4cd3d
Operating System:
    Mac OS X 10.7.5
    Darwin My-Mac-mini-2.local 11.4.2 Darwin Kernel Version 11.4.2
        Thu Aug 23 16:25:48 PDT 2012
        root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64

除了将 MonoTouch/MonoDevelop 更新到最新的稳定版本之外,最初没有任何变化。更新时,我必须重新获得 MonoTouch 许可,所以我这样做了,一切都安装得很好。与构建相比,它失败了。我更新了 Xcode,希望能解决这个问题,因为我使用的是最新的 Xcode,但没有。

无关,这不是我更新后遇到的唯一问题。在另一个项目中,我的 View 以 90 度旋转显示,但不用担心。只是提及它,以防它可能有助于解决问题,因为我的升级可能出了问题?


添加构建错误信息:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++ -arch i386 -gdwarf-2 -fobjc-legacy-dispatch -fobjc-abi-version=2 -miphoneos-version-min=6.0 -arch i386  -std=c99 -I/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk -c /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/main.i386.m -o /Users/Company/Projects/App/4-PDF2/App.Kiosk/obj/Debug/mtouch-cache/main..i386.cache.xT4QTbvqc0Zrv4eGTYvIJcXuuvo=.o
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++  -Wl,-no_pie -arch i386 -gdwarf-2 -fobjc-legacy-dispatch -fobjc-abi-version=2 -miphoneos-version-min=6.0 -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk  /Users/Company/Projects/App/4-PDF2/App.Kiosk/obj/Debug/mtouch-cache/main..i386.cache.xT4QTbvqc0Zrv4eGTYvIJcXuuvo=.o -o /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/AppKiosk -framework CFNetwork -framework AssetsLibrary -framework Accounts -framework CoreBluetooth -framework CoreTelephony -framework EventKit -framework EventKitUI -framework Foundation -framework CoreMotion -framework GameKit -framework GLKit -framework iAd -framework MapKit -framework MediaPlayer -framework MessageUI -framework NewsstandKit -framework OpenGLES -framework Social -framework StoreKit -framework Twitter -framework UIKit -framework PassKit -framework AddressBookUI -framework SystemConfiguration -framework AddressBook -framework AudioToolbox -framework AVFoundation -framework QuartzCore -framework CoreGraphics -framework CoreImage -framework CoreLocation -framework CoreText -framework ImageIO -framework MobileCoreServices -framework Security -framework CoreData -framework CoreMedia -framework CoreMIDI -framework CoreVideo -framework ExternalAccessory -framework AdSupport -framework QuickLook -lz -u _mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream -u _WriteZStream -u _monotouch_create_managed_ref -u _monotouch_release_managed_ref -liconv -lmonosgen-2.0 -lmonotouch-sgen -L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib -lmono-profiler-log -u _mono_profiler_startup_log -u _catch_exception_raise  -force_load /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/libPSPDF-ios5.1.a -force_load /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/libBARCODE-iphoneos.a "-lz" "-lxml2"
Process exited with code 1, command:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++  -Wl,-no_pie -arch i386 -gdwarf-2 -fobjc-legacy-dispatch -fobjc-abi-version=2 -miphoneos-version-min=6.0 -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk  /Users/Company/Projects/App/4-PDF2/App.Kiosk/obj/Debug/mtouch-cache/main..i386.cache.xT4QTbvqc0Zrv4eGTYvIJcXuuvo=.o -o /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/AppKiosk -framework CFNetwork -framework AssetsLibrary -framework Accounts -framework CoreBluetooth -framework CoreTelephony -framework EventKit -framework EventKitUI -framework Foundation -framework CoreMotion -framework GameKit -framework GLKit -framework iAd -framework MapKit -framework MediaPlayer -framework MessageUI -framework NewsstandKit -framework OpenGLES -framework Social -framework StoreKit -framework Twitter -framework UIKit -framework Paerror MT5201: Native linking failed. Please review user flags provided to gcc: "-lz" "-lxml2"
ssKit -framework AddressBookUI -framework SystemConfiguration -framework AddressBook -framework AudioToolbox -framework AVFoundation -framework QuartzCore -framework CoreGraphics -framework CoreImage -framework CoreLocation -framework CoreText -framework ImageIO -framework MobileCoreServices -framework Security -framework CoreData -framework CoreMedia -framework CoreMIDI -framework CoreVideo -framework ExternalAccessory -framework AdSupport -framework QuickLook -lz -u _mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream -u _WriteZStream -u _monotouch_create_managed_ref -u _monotouch_release_managed_ref -liconv -lmonosgen-2.0 -lmonotouch-sgen -L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib -lmono-profiler-log -u _mono_profiler_startup_log -u _catch_exception_raise  -force_load /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/libPSPDF-ios5.1.a -force_load /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/libBARCODE-iphoneos.a "-lz" "-lxml2"
ld: file not found: /var/folders/ln/yb817btn4_s7b52rhfk80cmm0000gn/T/tmp478d0592.tmp/libBARCODE-iphoneos.a
collect2: ld returned 1 exit status

最佳答案

error MT5201: Native linking failed. Please review user flags provided to gcc: "-lz" "-lxml2"

这意味着 native 链接器失败。最常见(但不是唯一)的原因是人们改变他们的选择。这就是为什么第一要做的事情是检查您的用户标志(它们看起来都很好)。

下一步是查看 native 链接器失败的原因。为此,您需要检查您的构建输出(您可以在 MonoDevelop 的错误列表板中看到)。

检查是否有任何警告(在日志上或 MD 错误列表板内)。那里可能有一些额外的信息。

您之前使用的 Xcode 版本是什么? (即更新之前)

Xcode 4.5 仅适用于 ARMv7(和 ARMv7),因此如果您使用 Xcode 4.4(或更早版本),您可能会尝试使用一些仅适用于 ARMv6 的第三方绑定(bind)。这是 native 链接器不喜欢的事情(您应该在构建日志中看到警告)。

关于ios - 升级后MonoTouch链接库编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13433334/

相关文章:

iphone - 在设备锁定时播放 iPod 库中的音频

ios - Xcode 配置文件数据警告

ios - 核心数据和 GCD : Passing the correct managed object context to custom NSManagedObjects

ios - Xcode - 接收器类型 'BFTask' 例如消息是前向声明

ios - Swift 3 中的不安全指针

ios - 为什么 CLLocationManager 不传递事件来处理?

javascript - Android OS/iOS/debian linux 中的事件(单击 Enter 键)

ios - Xcode 9.1 未找到图像 : libBacktraceRecording. dylib

android - Xamarin 形成自定义启动屏幕

sqlite - 如何在 MVVMCross 中使用社区 SQLite 插件