从C#传递字符串数组到c编程

我从C#.Net托管代码调用非托管C编程代码。 但我无法将字符串数组作为参数传递给C中的.Net函数:

dllmain(const int argc, const char *argv[]){} 

请帮助我,我如何从C Sharp.Net调用此function

谢谢。

这是一种可以做到这一点的方法:

C#代码:

  1. 声明要从C#调用的C函数

     [DllImport(".dll", CharSet = CharSet.Auto, EntryPoint = "dllmain", ExactSpelling = false, CallingConvention = CallingConvention.StdCall)] public static extern void dllmain(ref string str1); 
  2. 定义字符串

     [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)] public string str1; 
  3. 从C#代码调用C函数

      dllmain(ref str1); 

C代码:

  1. function原型

     __declspec(dllexport) void __stdcall dllmain(char *str1); 
  2. function定义

     void__stdcall dllmain(char *str1) { : } 

希望这对你有所帮助。 🙂

在.net中声明函数时,将以下属性添加到参数argv

 [In][MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStr)] 

您还应该将CharSet=CharSet.Unicode属性添加到应用于外部函数的DllImport属性。