我有一个需要从 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/