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

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

概述我试图在很多方面做到这一点,但没有一个是有效的.有人有一个正确的例子吗?我只想将wchar_t *值从函数移动到C#级别. 这并不像你想象的那么困难……什么是wchar_t *?这种类型通常代表什么价值?一个字符串.它等同于 windows.h中定义的LPWSTR类型. 所以,你把它作为一个字符串类型编组.但是,由于它是out参数(或返回值),因此您需要在C#端使用StringBuilder cl 我试图在很多方面做到这一点,但没有一个是有效的.有人有一个正确的例子吗?我只想将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代码必须释放字符串以防止内存泄漏.它是唯一一个可以访问分配字符串的非托管内存区域的人.

总结

以上是内存溢出为你收集整理的如何将Wchar_t *从C编组为C#作为out参数或返回值?全部内容,希望文章能够帮你解决如何将Wchar_t *从C编组为C#作为out参数或返回值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1241302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存