XamarinでNativeライブラリを使用する (iOS編)
XamarinでNativeのライブラリを使用するには、
使用したいライブラリをBindingする必要があります。
今回はReproのライブラリをBindingした方法をまとめます。
サンプルはこちら
Reproについてはこちら
Nativeライブラリの準備
ライブラリをダウンロードする
こちらから最新版をダウンロードしてください。
現時点では1.2.10.1というのが最新版です。
ライブラリの拡張子を変更する
ダウンロードしたファイルを解答すると下記のようなフォルダ構成になっています。
Repro.framework内の Repro を変更して Repro.a にしておきます。
ヘッダーファイルを保管する
Bindingにはヘッダーファイルも必要になります。
上の画像内の、Repor.hファイルを保管しておきます。
*1
ライブラリをC#で呼び出すための定義ファイルを生成する
ライブラリをC#で使用するには、ライブラリ内の関数をC#で呼び出せるようにする必要があります。
これは、Objective Sharpieを使用しすることで簡単にできるようになっています。
Objective Sharpieの使い方や、定義ファイルの生成はこちらにまとめてあります。
参考にしてファイルを生成してください。
NativeライブラリをBindingする
Xamarin Studio で Bindingプロジェクトを作成する
NativeライブラリをBinding するための Bindingプロジェクトを作成します。
作成されたプロジェクトは下記のようなものになります。
プロジェクトにNativeライブラリを追加する
ダウンロードしておいたライブラリ(.aファイル)をプロジェクト直下に追加します。 追加すると自動でlinkwith.csファイルが作成されます。
linkwith.csファイルの編集
Reproのドキュメントをフレームワークの追加が必要と書かれています。
クイックスタート: iOS (Objective-C, Swift) — Repro ドキュメント
必要なフレームワークについてはlinkwith.csファイルに追加します。
[assembly: LinkWith ("Repro.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator | LinkTarget.Simulator64 | LinkTarget.Arm64, SmartLink = true, ForceLoad = true)]
[assembly: LinkWith ("Repro.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator | LinkTarget.Simulator64 | LinkTarget.Arm64, SmartLink = true, ForceLoad = true, Frameworks = "AVFoundation CoreMedia SystemConfiguration", LinkerFlags = "-lz", IsCxx = true)]
C#での呼び出し定義ファイルをプロジェクトに追加する
Objective Sharpieで生成しておいたライブラリ呼び出し用の定義ファイルをプロジェクトに追加します。
ビルドアクションは()内のものに設定してください。
- ApiDefinitions.cs (ObjcBindingApiDefinition)
- StructsAndEnums.cd (ObjcBindingCoreSource)
完了
以上で完了になります。 あとは実際に使用したいプロジェクトに追加して使用してみてください。