1

我正在使用 c++ 和 directx 为带有 Unity3d 的 winphone 8 开发一个插件。我现在卡住了,因为我不知道如何将 IntPtr 类型从我的 c# 代码传递给我的 c++ 代码。对于 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.enableTextureDrawing(object)”没有重载匹配委托“NativeTextureDrawer.WP8EnableTextureDrawing”

我希望已经参与其中的人能帮助我。

感谢

4

1 回答 1

0

System.IntPtr 不是 Platform::Object^。您应该使用 IntPtr 中的 ToInt64() 或 ToInt32() 来获取内存地址并将其发送到本机代码。

于 2013-10-17T12:02:13.243 回答