WP8:如何在c ++中获取IntPtr

时间:2013-10-07 04:02:01

标签: c++ windows-phone-8 windows-runtime unity3d native

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

我希望有人能够帮助我。

感谢

1 个答案:

答案 0 :(得分:0)

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