将字符串数组从c#传递给c编程

本文关键字:编程 字符串 数组 | 更新日期: 2023-09-27 18:10:33

我正在从c# . net托管代码调用非托管C编程代码。但我无法通过字符串数组作为参数从。net函数C中的函数:

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

请帮助我,我如何从C Sharp调用这个函数。净

谢谢。

将字符串数组从c#传递给c编程

你可以这样做:

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);
    

C代码:

  1. 函数原型
    __declspec(dllexport) void __stdcall dllmain(char *str1);
    
  2. 函数定义
  3. void__stdcall dllmain(char *str1)
    {
        :
    }
    

希望这对你有帮助。: -)

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

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

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