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

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

解决方法

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

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

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

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

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

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

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...