2013-07-11 55 views
1

使用Xamarin的iOS - 綁定項目 - 警告

Xamarin工作室AM - 4.0.4(建設2) 單 - 2.10.11 Xamarin.iOS - 6.3.5.43 的Mac OS X - 10.8.2

當構建包裝器綁定類時,我收到一個警告,說'System.Runtime.CompilerServices.ExtensionAttribute'存在於多個程序集中。它只是一個警告,但建立.dll文件。

目標GenerateBindings:

工具/開發商/ MonoTouch中的/ usr/bin中/ btouch執行開始參數:/不安全/ d:DEBUG ApiDefinition.cs /s:StructsAndEnums.cs/TMPDIR:OBJ /調試/ IOS//sourceonly:obj/Debug/ios//sources.list

警告CS1685:

預定義System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies. Using definition from類型mscorlib程序」

/Developer/MonoTouch/usr/lib/mono/2.1/mscorlib。 dll(與之前的戰爭有關的符號的位置ning) /Library/Frameworks/Mono.framework/Versions/2.10.11/lib/mono/2.0/System.Core.dll(與之前的警告相關的符號的位置)

但是,當使用創建的綁定類在另一個項目中,它給出錯誤說 編譯爲本機代碼 - 錯誤MT5202:本機鏈接失敗。請查看構建日誌。'

在生成日誌 LD:未找到文件:/var/folders/w4/xsz8x8vx0_51hjxj474r1_fxhlq7x3/T/tmp9aef74.tmp/libPrint.a collect2:LD返回1退出狀態

注:libPrint.a是我的靜態庫

-Update-

當綁定的libPrint.a文件的包裝類,在某文件應該被添加到項目中,而不是「資源」文件夾內。這解決了我們面臨的問題。

回答

1

該警告是由於多個程序集中System.Runtime.CompilerServices.ExtensionAttribute'的歧義。

將警告放在一邊,真正的問題是添加libPrint.a文件時。 它是一個小小的愚蠢的錯誤。 xamarin的docs清楚地解釋它。 它應該被添加到項目中,而不是在「資源」文件夾中。 這解決了我在爲項目使用.dll文件時遇到的錯誤。

1

libPrint.a是否支持您正在構建iOS項目的體系結構?

因此,如果您正在編譯模擬器,您的libPrint.a需要支持i386。

如果您正在編譯設備,它需要支持您所定位的任何ARM arch。

+0

感謝您的回覆。 是的,libPrint.a支持所有體系結構 - 用於模擬器和armv7和armv7s的i386 – coder284

+0

您的綁定的其他構建輸出是什麼?它是否嵌入libPrint。一個作爲資源? (這應該)。你的libPrint.linkwith.cs文件的內容是什麼?你是否有一個? – jstedfast