c++ - WP8 : how to get back an IntPtr in c++

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

我正在使用 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++ 头文件中,我以这种方式匹配委托(delegate):

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

但是编译器抛出这个错误-> “WP8TextureDrawing.TextureDrawing.enableTextureDra wing(object)”没有重载匹配委托(delegate)“NativeTextureDrawer.WP8EnableTextureDrawing”

我希望已经接触过这方面的人能帮助我。

感谢

最佳答案

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

关于c++ - WP8 : how to get back an IntPtr in c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216849/

相关文章:

java - 如何将此 c++ for 循环转换为 java for 循环

c# - Windows Phone 8 上的多行代码文本 block

c# - C#中如何设置控件模板

c# - gridview 中的 Windows 8.1 选择模式

exception-handling - 如何处理导致异常的 WinRT 异常?

android - JNI-SIGSEGV信号SIGSEGV : invalid address when in worker thread

c++ - in_addr 结构需要解释

c++ - 我在不使用指针的情况下得到 "Segmentation Fault"。怎么了?

windows-phone-8 - Windows Phone 8 应用程序的临时分发

windows-phone-8 - Windows Phone 8.1 透明磁贴