我在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);
答案 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);