CLR:将(c#)字符串转换为以空结束的char (C)数组
本文关键字:结束 char 数组 转换 字符串 CLR | 更新日期: 2023-09-27 18:17:48
我已经创建了一个CLR项目,现在我需要转换一个c#文本框。文本属性转换为C-ansi字符数组(以空结束)。我需要将文本传递给C函数,就像这样:
更新2:
// Form1.h (C#)
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
myCFunction(textBoxName.Text); // wrong
}
// utils.h (C) - inside the same project as Form1.h
void myCFunction(char* szName);
// utils.cpp (C) - inside the same project as Form1.h
void myCFunction(char* szName)
{
// do something
}
如果您使用p/Invoke将其传递给C函数,我相信编组程序将根据声明中应用于参数的属性为您完成此操作。
根据这个文档,你可能想要这样的内容:
[DllImport("YourLibrary.Dll")]
public extern void Foo([UnmanagedType.LPStr] string text)
char* str2 = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text);
简单。