0

更新:以下の回答。

UIViewControllerを受け取る静的Cライブラリがあり、そのView Controllerを使用して独自のUIViewControllerを表示し、制御を取得してUIを表示してから、リリースします。UIViewControllerをC#からそのC関数にバインド/マーシャルする方法を理解するのに問題があります。

私のC#コードは、次のようなクラスを作成します。

システムを使用する; System.Collections.Specializedを使用します。System.Runtime.InteropServicesを使用します。

 namespace ImportedUI 
 { 

      [StructLayout(LayoutKind.Sequential)]

      public class MyUI
      {
          [DllImport("__Internal")]
          protected extern static void MyUIInit(ref MonoTouch.UIKit.UIViewController viewController);

          public MyUI(MonoTouch.UIKit.UIViewController viewController)
          {
               MyUIInit(ref viewController);
          }
      }
 }

私の静的ライブラリ関数の定義は次のとおりです。

void MyUIInit(UIViewController * viewController);

上記はマーシャリング例外を取得します。

4

1 に答える 1

0

次のコードが機能します。

public class MyUI
{
    [DllImport("__Internal")]
    protected extern static void MyUIInit(IntPtr viewController);

    public MyUI(MonoTouch.UIKit.UIViewController viewController)
    {
        MyUIInit(viewController.Handle);
    }
}
于 2013-03-20T22:32:38.393 に答える