Csharp/C#教程:如何将wchar_t *从C ++编组为C#作为out参数或返回值?分享


如何将wchar_t *从C ++编组为C#作为out参数或返回值?

我试图在很多方面做到这一点,但没有一个是有效的。 有人有一个正确的例子吗? 我只想将wchar_t*值从函数移动到C#级别。

这并不像你想象的那么困难……什么是wchar_t* ? 这种类型通常代表什么价值? 一个字符串。 它等同于windows.h定义的LPWSTR类型。

所以,你把它作为一个string类型编组。 但是,由于它是out参数(或返回值),因此您需要在C#端使用StringBuilder类 ,而不是string类型。

P / Invoke语法看起来像这样:

 [DllImport("MyLib.dll")] public static extern void MyFunction(StringBuilder str); 

要使用它,首先要声明具有适当容量的StringBuiler类的实例,然后调用该函数:

 StringBuilder myString = new StringBuilder(255); MyFunction(myString); 

请记住,非托管C ++代码必须释放字符串以防止内存泄漏。 它是唯一一个可以访问分配字符串的非托管内存区域的人。

上述就是C#学习教程:如何将wchar_t *从C ++编组为C#作为out参数或返回值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/999999.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐