1

C ++とdirectxを使用して、Unity3dでwinphone 8用のプラグインを開発しています。C# コードから C++ コードに IntPtr 型を渡す方法がわからないため、現在行き詰まっています。Android または iOS プラグインでは、データを void* として取得できるため、実際にははるかに簡単です。ただし、Windows Phone ランタイム コンポーネント プロジェクトでは不可能です。私が読んだことから、winRTタイプを使用する必要があります。もう検索した

ここに私のコードサンプルがあります:

C# の場合:

public delegate void WP8EnableTextureDrawing(System.IntPtr texture);
private WP8EnableTextureDrawing wp8EnableTextureDrawing;

public void SetWP8TextureDrawingFunc(WP8EnableTextureDrawing func){

    wp8EnableTextureDrawing = func;
}

//...

wp8EnableTextureDrawing(targetTexture.GetNativeTexturePtr());

C++ ヘッダー ファイルでは、デリゲートを次のように一致させます。

static void enableTextureDrawing(Platform::Object ^texturePtr);

しかし、コンパイラはこのエラーをスローします -> 'WP8TextureDrawing.TextureDrawing.enableTextureDra wing(object)' のオーバーロードはデリゲート 'NativeTextureDrawer.WP8EnableTextureDrawing' に一致しません

すでにこれを手に入れている人が私を助けてくれることを願っています。

感謝

4

1 に答える 1

0

System.IntPtr ins't Platform::Object^. メモリ アドレスを取得してネイティブ コードに送信するには、IntPtr の ToInt64() または ToInt32() を使用する必要があります。

于 2013-10-17T12:02:13.243 に答える