假设我有一个遗留的纯 C++ 库,其中包含一组以 C++ 结构(本机)作为参数的函数。这个库将被包装到一个 WinRT 组件中,该组件将从 C#(平台 - Windows Phone)中使用。显然,最简单的解决方案是将所有结构重复为 C++/CX 值结构。但是如何将这些结构传递给纯 C++ 函数/方法?可能吗 ?如果不是,在这种情况下包装逻辑的解决方案是什么?
问问题
372 次
2 回答
2
通常,来自 C++/CX 的值结构将需要在 C++/CX 层中复制某种形式,然后再传递到本机代码。您需要将 C++/CX 表单中的数据编组到您正在使用的本机表单中。
话虽如此,文档确实建议您可以直接使用memcpy
从 a 复制value struct
到标准(本机)C++ 结构,这比单独映射值更干净,前提是您不使用String^
or IBox<T>^
:
包含 Platform::String^ 或 IBox^ 类型作为成员的值类或值结构不是 memcpy-able。
于 2013-11-05T23:12:13.420 回答
0
是的,这是可能的。阅读有关 P/Invoke 和结构的信息。您必须在 C# 中复制结构和函数声明,但它通常工作得很好。查看文档到StructLayoutAttribute
和。DllImportAttribute
LayoutKind
于 2013-11-05T21:11:04.527 回答