从 C++ 库方法返回的“char*”获取 C# 字符串?
Posted
技术标签:
【中文标题】从 C++ 库方法返回的“char*”获取 C# 字符串?【英文标题】:Get C# String from "char*" returned from C++ library method? 【发布时间】:2012-05-28 22:58:39 【问题描述】:我有一个在我的 C# 应用程序中使用的 C++ 库。 C++ 库中的一种方法返回char *
。如何在我的 C# 应用程序中将 char *
转换为字符串?
显然在我的 C# 应用程序中,此方法返回的数据类型是 sbyte *
类型。
【问题讨论】:
P/Invoke 或...? (请用访问方法标记。) 封送它为StringBuilder
?
@pst 我不确定,因为我对 C++ 编程非常陌生。我在源代码部分有方法,在标题部分有 c# 应用程序将使用的方法。在标题部分有方法签名..
@cicada 我将在哪里使用它?在 C++ 部分或 C# 中?
参考:msdn.microsoft.com/en-us/library/k9s9t975.aspx
【参考方案1】:
String
拥有a constructor that takes a char*
:
char* x = ...
string s = new string(x);
还有another one that takes a sbyte*
:
sbyte* x = ...
string s = new string(x);
【讨论】:
当我将 sbyte * x 分配给返回 char * 的 C++ 方法时,会生成以下错误:错误 1 指针和固定大小的缓冲区只能在不安全的上下文中使用。有什么想法吗?谢谢! 发现问题出在哪里...我不得不在方法签名中写 unsafe... :) 非常感谢!:)以上是关于从 C++ 库方法返回的“char*”获取 C# 字符串?的主要内容,如果未能解决你的问题,请参考以下文章
从 c# 项目 System.AccessViolationException 调用 c++ char*
为啥我不能在发布版本中将 char* 字符串从 C++ 返回到 C#?
为啥 C++ 从 C# 中为返回自定义结构的函数获取错误的参数值
调用从 c# 返回 char* 的 c++ dll 函数。无法使用 DllImport()