将char*发送到字符串c#
我在将char*发送到字符串c#,c#,c,C#,C,我在c中有一个带有两个参数的函数。它们都是char*。 其中一个是输入,另一个是输出,我不知道第二个(输出)应该填什么请帮助我 // C void func1(char * i_szInput , char * o_szOutput) { printf("%s\n" , i_szInput ); strcpy(o_szOutput , "Hello"); } // C# [DllImport("Test.dll")] public static void fun
c
中有一个带有两个参数的函数。它们都是char*
。
其中一个是输入,另一个是输出,我不知道第二个(输出)应该填什么请帮助我
// C
void func1(char * i_szInput , char * o_szOutput)
{
printf("%s\n" , i_szInput );
strcpy(o_szOutput , "Hello");
}
// C#
[DllImport("Test.dll")]
public static void func1([MarshalAs(UnmanagedType.LPStr)] string str1,
[MarshalAs(UnmanagedType.LPStr)] string str2);
// .......
string str = null;
func1("mytest" , str);
使用
StringBuilder
。来自MSDN
引用字符串:使用StringBuilder将字符串作为输入/输出参数传递
请参阅(MSDN)。使用
StringBuilder
。来自MSDN
引用字符串:使用StringBuilder将字符串作为输入/输出参数传递
请参阅(MSDN)。尝试以下操作:
string str = String.Empty;
func1("mytest", out str);
试试这个:
string str = String.Empty;
func1("mytest", out str);
您应该使用
StringBuilder
您应该使用StringBuilder
@Ria[MarshalAs(UnmanagedType.LPStr),Out()]StringBuilder str2
或[MarshalAs(UnmanagedType.LPStr)]Out-StringBuilder str2
?您不应该为StringBuilder
定义一个大小吗?MSDN用于编组非托管LPSTR
类型。@Ria[Marshallas(UnmanagedType.LPSTR),Out()]StringBuilder str2
或[Marshallas(UnmanagedType.LPSTR)]Out StringBuilder str2
?您不应该为StringBuilder
定义一个大小吗?用于编组非托管LPSTR
类型的MSDN。