我必须从C#向C ++发送一个列表.C#列表是List<string>MyList
,C ++代码接受它为list<wstring>cppList
。如何使用marshalas。
由于
答案 0 :(得分:3)
C#不能P / Invoke复杂的C ++类型。您将不得不使用C ++ / CLI,他们可能有一个方法来编组它。否则,你必须单独编组每个字符串。
答案 1 :(得分:3)
在本机代码和托管代码之间使用复杂类型封送总是更明智。
在List
的情况下,这些类型完全不同,因为它们对每个项目都有不同的内存布局。
所以最好的方法是在本机dll中编写一个实用程序函数,接受字符串数组(char *)并手动构建原生List
并最终调用所需的方法。您可以轻松创建该实用程序函数的包装器。
答案 2 :(得分:0)
strings
是wstrings
(2字节的unicode字符串),所以如果你说的是真的,那么就不需要特殊的转换。