1

私が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 でサポートされているアーキテクチャがあります。

どうにかしてネイティブ ライブラリを強制的にロードする必要がありますか、それともラッパーを機能させるために明らかな何かを見逃しただけですか?

4

1 に答える 1

2

属性は、およびとしてLinkWithのみ言及されています。お使いのデバイスが の場合、これが機能しない理由を説明している可能性があります。ArmV7SimulatorLinkTargetArmv7s

于 2013-05-11T09:19:33.990 に答える