Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将char*发送到字符串c#_C#_C - Fatal编程技术网

将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。