私がWikitude SDKフレームワーク用に作成した monotouch バインディングは、実行時に機能しません。次の手順に従ってバインディングを作成しました: https://stackoverflow.com/a/13070064/42826。
実行時にラッパー クラスをインスタンス化しようとすると、次の例外が発生します。
ラッパー タイプ 'Wikitude.WTArchitectView' には、ネイティブの ObjectiveC クラス 'WTArchitectView' がありません。
実行時にネイティブ クラスWTArchitectViewがバインド アセンブリによって読み込まれないようです。ネイティブ ライブラリWikitudeSDK.aは、実際には、 ObjcBindingNativeLibraryビルド アクションを使用してバインディング アセンブリ内にあります。
これが私のLinkWith宣言です ( Wikitudeネイティブ ライブラリで必要な-ObjCに注意してください):
[assembly: LinkWith ("WikitudeSDK.a", LinkTarget.ArmV7 | LinkTarget.Simulator, Frameworks = "CoreVideo Security SystemConfiguration CoreMedia AVFoundation CFNetwork CoreLocation CoreMotion MediaPlayer OpenGLES QuartzCore CoreGraphics", ForceLoad = true, LinkerFlags = "-ObjC", IsCxx = true)]
私のApiDefinition.csのほとんどは、Objective Sharpieを使用して作成されました。 注: テスト目的で 1 つの関数だけを残しました。
namespace Wikitude
{
[BaseType (typeof (UIView))]
interface WTArchitectView {
[Export ("initializeWithKey:motionManager:")]
void InitializeWithKey (string key, NSObject motionManager);
}
}
ここにウィキチュードSDK ヘッダー ファイルがあります: http://pastebin.com/HKBED11u
私のプロジェクトには、ARMv7 + ARMv7s でサポートされているアーキテクチャがあります。
どうにかしてネイティブ ライブラリを強制的にロードする必要がありますか、それともラッパーを機能させるために明らかな何かを見逃しただけですか?