4

Xcode4を使用してCocoaTouch静的ライブラリを作成しました。MonoTouchプロジェクトで使用したいと思います。どうすれば続行できますか?

これが私の静的ライブラリの内容です:

MyClass.h
ヘッダ

MyClass.m
実装


このブログ投稿に従って「BuildForArchiving 」を使用してビルドし、生成されたlibMyLib.aを取得して、新しいMonoTouchバインディングプロジェクトに追加しました。
バインディングプロジェクト

次に、このブログ投稿でそう言われたので、libMyLib.linkwith.csのコンテンツを置き換えました。

[assembly: LinkWith ("libMyLib.a", LinkTarget.ArmV6 | LinkTarget.ArmV7 | LinkTarget.Simulator, ForceLoad = true, Frameworks="CoreGraphics QuartzCore UIKit")]

次に、これをApiDefinition.csに追加しました
ここに画像の説明を入力してください

StructsAndEnums.csを空のままにしました。


次に、Releaseを使用してビルドし、binフォルダーからdllを取得して、MonoTouch iPadプロジェクトのルートに追加し、参照に追加しました。

次に、この記事の指示に従った後、 mtouch引数をこれに設定します

-gcc_flags "-L${ProjectDir} -lMyLib -force_load -ObjC"

次に、プロジェクトを実行しようとしましたが、ビルド出力でこのエラーが発生しました

エラーMT5201:ネイティブリンクに失敗しました。gccに提供されているユーザーフラグを確認してください: "-L / Users / herpderp / Projects / TestProject / TestProject" "-lMyLib" -force_load "/Users/herpderp/Projects/TestProject/TestProject/libMyLib.a" "-L / Users / herpderp / Projects / TestProject / TestProject "" -lMyLib "" -force_load "" -ObjC "

4

2 に答える 2

1

このディレクトリには、Objective-CライブラリをMonoTouchと統合するさまざまな方法を示す完全なサンプルが含まれています。

https://github.com/xamarin/monotouch-samples/tree/master/BindingSample

于 2012-04-18T21:28:34.880 に答える
1

MT5201のエラーメッセージは、ネイティブリンクステップの実行中にエラーが発生したことを示しています。それは100%確実です。gcc_flags2番目の部分では、失敗の最も一般的な理由であるを確認するように求められます。ただし、これが問題であるかどうかは100%確実ではありません。ヘルプを求めるときは、常にエラーの上に行を貼り付ける必要があります(役立つ場合があります)。

エラーは、ネイティブリンカーに与えられたオプションの重複に関するものである可能性があります。これは、それらを2回(つまり、バインディングプロジェクトとメインプロジェクトで)提供したために発生します。

リンクしたBindingObjective-CTypesの記事から:

または、コントラクトファイルに埋め込むことができるアセンブリレベルのLinkWithAttributeを利用することもできます...

これは、属性を使用するときに追加のmtouch引数不要LinkWithであることを意味します。この方法(最良の方法:-)を使用して静的ライブラリをバインドしているので、このステップを(メインプロジェクトから)スキップできます。

そうすることで、同期が外れるリスクが少なくなるため、自分自身(およびライブラリを使用するすべての人)に有利になります(たとえば、ライブラリの更新や異なるビルド構成)。

于 2012-04-18T20:17:42.360 に答える