2012-04-18 4 views
4

Xcode 4を使用してCocoa Touch Static Libraryを作成しました。これをMonoTouchプロジェクトで使用したいと考えています。どのように進めますか?ここでCocoa Touch Static LibraryをMonoTouchプロジェクトにリンクするにはどうすればいいですか?

は私の静的ライブラリの内容です:

MyClass.h
header

MyClass.m
implementation


私は後に、 "アーカイブのビルド" を使用して構築されましたTHIS BLOG POSTの後にlibMyLib.aを生成し、それを新しいMonoTに追加しましたバインディングプロジェクトTHIS BLOG POSTがそう言ったので binding project


は、それから私は、libMyLib.linkwith.csの内容を置き換えます。

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

は、それから私は私が空StructsAndEnums.csを残しApiDefinition.cs
enter image description here

にこれを追加しました。


は、それから私はリリースで構築し、binフォルダからDLLを取り、MonoTouchでiPadのプロジェクトのルートにそれを追加し、参照にこれを追加しました。

はその後、THIS ARTICLEの指示に従った後、私はプロジェクトを実行しようとした後、この

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

へのmTouch引数を設定し、私はビルド出力

エラーで、このエラーを得ましたMT5201:ネイティブ・リンクに失敗しました。 "-L/Users/herpderp/Projects/TestProject/TestProject" "-lMyLib" -force_load "/Users/herpderp/Projects/TestProject/TestProject/libMyLib.a" "-L/Users/herpderp /プロジェクト/ TestProject/TestProject」 "-lmylib" "-force_load" "-ObjC"

答えて

1

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

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

+0

私のニーズに合わせてサンプルプロジェクトを修正しました –

1

MT5201のエラーメッセージは、ネイティブのリンクステップを実行中にエラーが発生したかを示します。それは100%確実です。 2番目の部分は、障害の最も一般的な理由であるgcc_flagsを確認するよう求められます。しかし、それはではないこれは問題であると確信しています。あなたが助けを求めるときには、エラーの上に行を貼り付けるべきです(役に立つかもしれないので)。

ネイティブリンカーに与えられたオプションの複製に関するエラーは、です。これは、それらを2回(バインドしたプロジェクトとメインプロジェクトで)提供したために発生します。あなたがリンクされBinding Objective-C Types記事から

:あなたがあなたの契約ファイルに埋め込むことができ、アセンブリレベルのLinkWithAttributeを利用することができます

それとも...

それはあなたがLinkWith属性を使用して必要なないある追加のmTouch引数を意味します。静的ライブラリをバインドするには、この方法(最善のもの:-)を使用しているので、この手順を省略することができます(メインプロジェクトから)。

これを行うと、自分自身(そしてライブラリを使用しているすべての人)が、同期が外れてしまう危険性が低いため(ライブラリの更新やビルドの設定など)、恩恵を受けることができます。

+0

、何も機能しません。私のバインディングからMyClass.Test( "str")を呼び出すことはできますが、何も起こりません。私のバインディングに何が間違っているか分かりません。私のxcodeプロジェクトのコンパイラフラグが見つからないことに関連していますか?私は静的ライブラリを構築したときに "Build For Archiving"を選択したためですか? –

+0

**何もうまくいきません**うまく構築されていて以前はありませんでした(私はこの進歩と呼んでいます;-)。今なぜ?言いにくい。 '.a'はあなたが使っているシミュレータ/デバイステストアプリから使えるファットライブラリですか? – poupou

関連する問題