将char *发送到字符串c#

时间:2012-08-01 07:04:40

标签: c# c

我在c中有一个包含2个参数的函数。他们都是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);

2 个答案:

答案 0 :(得分:1)

使用StringBuilder。来自MSDN Marshaling Strings

  

引用字符串:使用StringBuilder将字符串作为In / Out参数传递。

 [DllImport("Test.dll")]
 public static void func1([MarshalAs(UnmanagedType.LPStr)] String str1,
                          [MarshalAs(UnmanagedType.LPStr)] StringBuilder str2);

StringBuilder str = new StringBuilder();
func1("mytest", str);

请参阅 Default Marshaling for Strings: Fixed-Length String Buffers(MSDN)

答案 1 :(得分:0)

试试这个:

string str = String.Empty;
func1("mytest", out str);