1

最近,我开始从事 Windows 手机的开发工作。

我有一个用 C 语言编写的项目,在我的 windows phone 8 解决方案中。我创建了一个动态链接库(DLL)项目,它可以成功构建。在其中,我使用了一个运行时组件项目来将 DLL 的方法提供给 UI(C#) 项目。在方法中,我有一些指针参数,我使用 Intptr 对象将一个 byte[] 对象传递给运行时组件项目。不幸的是,这导致程序崩溃。

如何将指针参数传递给运行时组件项目或 DLL 项目?或许,还有其他方法可以使用 [Dllimort] 方法导入我的 DLL 文件吗?

任何帮助表示赞赏!

PS:我的解决方案结构:

  1. [动态链接库项目(C++)].dll_method(void *para);

  2. [运行时组件项目(C++)].rc_method(Intptr p)

    {
       dll_method((void*)p);
    }
    
  3. [Windows phone 8 项目(C#)].method()

    {
       GCHandle g = GCHandle.Alloc(byte[], GCHandleType.Pinned);
       IntPtr p = g.AddrOfPinnedObject();
       rc_method(p);
    }
    
4

1 回答 1

0

除非您正在执行远程进程通信,否则要从 Windows Phone 应用程序项目 (C#) 调用 Windows Phone 运行时组件 (C++),您需要做的就是添加本机项目作为参考。

您可以将任何 WinRT 支持的类型作为参数传递。至于回调,你也可以使用事件(如果在同一个进程中),或者传入回调类型(对于 RPC)。

于 2012-10-19T07:47:54.550 回答