c# - 从 C# 调用带有 char* 参数的 DLL 函数?

标签 c#

我有一个需要从 C# 调用的 C++ dll。 dll 中的一个函数需要一个 char* 作为输入参数,另一个函数使用 char* 作为输出参数。

从 C# 调用它们的正确方法是什么?

最佳答案

如果参数是只读的,则字符串应该可以工作,如果方法修改了字符串,您应该改用 StringBuilder。

以下引用示例:

 [DllImport ("libc.so")]
 private static extern void strncpy (StringBuilder dest, 
      string src, uint n);

 private static void UseStrncpy ()
 {
    StringBuilder sb = new StringBuilder (256);
    strncpy (sb, "this is the source string", sb.Capacity);
    Console.WriteLine (sb.ToString());
 }

如果您不知道 p/invoke 编码(marshal)处理的工作原理,您可以阅读 http://www.mono-project.com/Interop_with_Native_Libraries

如果您只关注字符串,请只阅读以下部分:http://www.mono-project.com/Interop_with_Native_Libraries#Strings

关于c# - 从 C# 调用带有 char* 参数的 DLL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/889054/

相关文章:

c# - C#音频库-WMP或其他

c# - 如何将枚举标志与字典键进行比较?

C# 如何在不四舍五入的情况下将 double 格式化为小数点后一位

c# - 屏幕分辨率和滚动条

c# - 如何编写正则表达式以将 HEX 值与变量声明相匹配?

c# - 重新分配单元格值后 Excel 公式丢失

c# - JsonResult 有时会被截断

c# - WebSphere MQ .NET API

c# - 更有效地实现大量事件

C# Linq 获取后代的值