問題タブ [xamarin-linker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xamarin.forms - Xamarin iOS ビルド エラー - ネイティブ リンクに失敗しました (リンク フレームワーク SDK のみ)
Visual Studio の更新後に Xamarin iOS プロジェクトを実行できません。
更新された IDE には最新の Xcode が必要なため (Xcode 11.4 に同梱されている iOS 13.4 SDK)
環境の詳細
- OS バージョン : macOS Mojave、OS X 10.14.6
- IDE : Visual Studio Community 2019 for Mac バージョン 8.5.1 (ビルド 42)
- Xamarin.iOS バージョン: 13.16.0.11 (Visual Studio コミュニティ)
- Xamarin.Mac バージョン: 6.16.0.11 (Visual Studio コミュニティ)
- Xcode バージョン 13.2
私が試したこと。
Xcode を更新する代わりに、単純に を に変更しLinker Behaviour
ましたLink Framework SDKs Only
。
うまくいきません。次のエラーが発生しました。
参照。
Xcode と macOS を更新せずに問題を解決する他のオプションはありますか?
どんな助けでも本当に感謝します。
ありがとうございました
xamarin - Xamarin: リンカー エラーを修正 (FFImageLoading および SDWebImage を使用)
一部のネイティブ フォーム ページを既存の Xamarin.iOS アプリケーションに統合して、それらのページを複数のプラットフォーム間で共有できるようにしようとしています。これらのネイティブ フォーム ページの画像に Xamarin.FFImageLoading を使用したいと思います。これは通常、簡単な作業であり、以前は問題なく実行できました。
この特定の Xamarin.iOS アプリケーションで私が直面している問題は、Xamarin.SDWebImage が同様の画像機能に既に使用されているパッケージに付属しています。これら 2 つの NuGet パッケージが追加されて参照されると、リンカーは多くの「重複シンボル」エラーを表示します。エラーはWebPに関連していることがわかりました。これは、競合を引き起こしている 2 つのパッケージが (異なるソースから) 使用するバインディングのようです。
一般的な質問は、2 つの異なるネイティブ ライブラリが同じシンボルを定義している場合、どうすればよいかということです。
この特定のエラー メッセージについては、https ://docs.microsoft.com/en-us/xamarin/ios/troubleshooting/mtouch-errors#mt5212-native-linking-failed-duplicate-symbol-で説明されています。 「2 つの異なるネイティブ ライブラリがたまたま同じシンボルを定義している」という問題に直面しています。しかし、そのページには、その特定の原因について何をすべきかについてはまったく言及されていません。
--registrar:static
andなど、役立つと思われる mtouch 引数を追加してみました。また、AssemblyInfo.cs (または .csproj ファイル) にステートメント-gcc_flags -dead_strip
を追加してみました。[assembly: LinkWith (..., SmartLink = true)]
しかし、それらは役に立ちませんでした。
残念ながら、ソース コードを共有することはできませんが、まったく新しい Xamarin.iOS プロジェクトを作成して 2 つのパッケージを取り込み、AppDelegate で簡単なメソッド呼び出しを使用して両方を呼び出すだけで、非常に簡単に再作成できます。 .cs (リンク中にどちらも完全に取り除かれないようにするため)。例:
new FFImageLoading.ImageService();
new SDWebImage.FLAnimatedImageView();
プロジェクトがビルドされることを期待していますが、プロジェクトはビルドされず、次のような多くのエラーが表示されます。
Native linking failed, duplicate symbol: '_WebPAllocateDecBuffer'. Duplicate symbol in: /.../liblibwebp.a(buffer_dec.o) (Location related to previous error) Duplicate symbol in: /.../WebP.a(libwebpdspdecode_neon_la-alpha_processing_neon.o) (Location related to previous error)
では、これらのエラーの背後にある理由は何でしょうか? 「2 つの異なるネイティブ ライブラリが同じシンボルを定義している」ということですか。私が疑うように、それとも何か他のものですか?そして、私はそれについて何ができますか?
問題の 2 つのパッケージ:
- https://github.com/luberda-molinet/FFImageLoading
- https://github.com/xamarin/XamarinComponents/tree/master/iOS/SDWebImage
さらに詳しい情報:
- Xamarin.iOS バージョン: 13.16.0.13 (Visual Studio コミュニティ)
- Xコード11.4
ありがとう、ラファエル
ios - プロジェクトを追加するときの Xamarin IOS リンカー エラー
そのため、ユーティリティ プロジェクトを Xamarin ソリューションに追加したところ、リンカー エラーが発生しています。Linker Behavior をリンクしないように設定しているため、これは意味がありません。これを回避する方法があるかどうか誰かが知っていますか?
\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885,3): 警告 MT5215: 'libcups' への参照には追加の -framework=XXX または-lXXX ネイティブ リンカーへの指示 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885,3): warning MT5215: References to 'gdiplus' には、ネイティブ リンカー 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets への追加の -framework=XXX または -lXXX 命令が必要な場合があります(885,3): エラー MT5202: ネイティブ リンクに失敗しました。ビルド ログを確認してください。ネイティブ リンカー 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885, 3): 警告 MT5215: 'gdiplus' への参照には、ネイティブ リンカーへの追加の -framework=XXX または -lXXX 命令が必要になる場合があります 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS \Xamarin.iOS.Common.targets(885,3): エラー MT5202: ネイティブ リンクに失敗しました。ビルド ログを確認してください。ネイティブ リンカー 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885, 3): 警告 MT5215: 'gdiplus' への参照には、ネイティブ リンカーへの追加の -framework=XXX または -lXXX 命令が必要になる場合があります 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS \Xamarin.iOS.Common.targets(885,3): エラー MT5202: ネイティブ リンクに失敗しました。ビルド ログを確認してください。\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885,3): エラー MT5202: ネイティブ リンクに失敗しました。ビルド ログを確認してください。\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885,3): エラー MT5202: ネイティブ リンクに失敗しました。ビルド ログを確認してください。
xamarin.forms - Android プロジェクトで Visual.Basic nuget を使用すると、Xamarin.Android リンカー エラーが発生する
Xamarin.Android プロジェクトの dll またはプロジェクト参照としてこのライブラリを使用して、VB.net .net 3.5 で記述された古いライブラリを使用していますが、「none」へのリンカーで正常に動作します。リンカーを使用すると問題が発生します。リンカーを「SDK アセンブリのみ」に設定すると、次のエラー メッセージが表示されます。
エラー Java.Interop.Tools.Diagnostics.XamarinAndroidException: エラー XA2006: 'System.Void Microsoft.VisualBasic.MyGroupCollectionAttribute::.ctor(System.String,System.String,System.String,System.String)' への参照を解決できませんでした(アセンブリ 'VBLibraryProject、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' で定義) スコープ 'Microsoft.VisualBasic、Version=8.0.0.0、Culture=neutral、PublicKeyToken='。スコープが定義アセンブリと異なる場合、通常は型が転送されることを意味します。---> Mono.Cecil.ResolutionException: System.Void Microsoft.VisualBasic.MyGroupCollectionAttribute::.ctor(System.String,System.String,System.String,System.String) を Mono.Linker.Steps.MarkStep で解決できませんでしたMono.Linker.Steps.MarkStep の .HandleUnresolvedMethod(MethodReference 参照)。
Mono.Linker.Steps.MarkStep.MarkCustomAttributes (ICustomAttributeProvider プロバイダー) で Mono.Linker.Steps.MarkStep.MarkEntireType (TypeDefinition 型) で Mono.Linker.Steps.MarkStep.MarkEntireType (TypeDefinition 型) で Mono.Linker.Steps.MarkStep .MarkEntireAssembly(AssemblyDefinition アセンブリ) で Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition アセンブリ) で Mono.Linker.Steps.MarkStep.Initialize() で Mono.Linker.Steps.MarkStep.Process(LinkContext コンテキスト) で MonoDroid.Tuner Mono.Linker.Pipeline.ProcessStep(LinkContext コンテキスト、ISep ステップ) の .MonoDroidMarkStep.Process(LinkContext コンテキスト)
Mono.Linker.Pipeline.Process(LinkContext コンテキスト) で MonoDroid.Tuner.Linker.Process(LinkerOptions オプション、ILogger ロガー、LinkContext& コンテキスト) で Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res) で
以下のようなライブラリに AndroidLinkSkip を追加しました
それにもかかわらず、同じエラーでまだ失敗していますか? プロジェクトは、最新の XF 4.8 バージョンを Android.Support ライブラリとターゲット バージョン android 9.0 最小バージョン 8.0 で使用しています。
編集: 以下のタイプの linker.xml を試してみましたが、役に立ちませんでしたLinkDescription
。