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

时间:2011-10-04 06:40:50

标签: c# c

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

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

在.net:

中声明函数时,将以下属性添加到参数argv
[In][MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStr)]

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

答案 1 :(得分:1)

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

C#代码:

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

    [DllImport("<DLL_File_Name>.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);
    
  4. C代码:

    1. 功能原型

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

      void__stdcall dllmain(char *str1)
      {
          :
      }
      
    3. 希望这会对你有所帮助。 : - )