积极答复者
WinRT 不能通过 IntPtr 将C#对象传参到 C++/CX么?

问题
-
运行时提示,无法封送处理“parameter #1”: Windows 运行时封送拆收器不支持该类型。
要传递指针,要怎么办
IntPtr view = Marshal.AllocCoTaskMem(DataLoader.Loader.GetSizeShaderResourceView());
DataLoader.Loader.CreateDDSTextureFromMemory(
m_d3dDevice.NativePointer,
Marshal.UnsafeAddrOfPinnedArrayElement(data, 0),
(uint)dataSize,
resource,
view, 0
);- 已编辑 Cocker Lee 2013年8月20日 6:24
答案
-
好像不用这么复杂,指针实质就是整数,传递整数还是允许的,反正在C++内部都进行了类型转化,不如就把类型转换提到C#里面来做。
不知道这样可以不
参数就变成了 m_d3dDevice.NativePointer.ToInt32()- 已编辑 Cocker Lee 2013年8月22日 6:43
- 已标记为答案 Cocker Lee 2013年8月27日 1:34
全部回复
-
Hi Cocker Lee,
论坛中有类似的讨论帖,大概的意思就是不能通过IntPtr来传递对象,不过下面叫Marian的MSFT给出了一个可供参考的办法。
另外参考这篇文档,里面有提到IntPtr For internal use only。
以上。
--James
<THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
Thanks
MSDN Community Support
Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.- 已编辑 Jamles HezModerator 2013年8月21日 5:33 。。。。
-
好像不用这么复杂,指针实质就是整数,传递整数还是允许的,反正在C++内部都进行了类型转化,不如就把类型转换提到C#里面来做。
不知道这样可以不
参数就变成了 m_d3dDevice.NativePointer.ToInt32()- 已编辑 Cocker Lee 2013年8月22日 6:43
- 已标记为答案 Cocker Lee 2013年8月27日 1:34
-
好像不用这么复杂,指针实质就是整数,传递整数还是允许的,反正在C++内部都进行了类型转化,不如就把类型转换提到C#里面来做。
不知道这样可以不
参数就变成了 m_d3dDevice.NativePointer.ToInt32()
我看行。- 已标记为答案 Cocker Lee 2013年8月27日 1:34
- 取消答案标记 Jamles HezModerator 2013年8月27日 2:48
-
Hi Cocker,
你可以尝试下,如果可行的话,请共享给论坛中的其他参与者,这样他们遇到问题也能轻松解决。
--James
<THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
Thanks
MSDN Community Support
Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.