-2

我创建了一个 CLR 项目,现在我需要将 C# textBox.Text 属性转换为 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
}
4

2 回答 2

1

如果您使用 P/Invoke 将它传递给 C 函数,我相信编组器会根据应用于声明中参数的属性为您完成。

因此,基于此文档,您可能需要类似以下内容:

[DllImport("YourLibrary.Dll")]
public extern void Foo([UnmanagedType.LPStr] string text)
于 2013-06-09T07:49:05.583 回答
0
char* str2 = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text);

简单的。

于 2013-06-11T07:54:15.117 回答