温馨提示×

c#dllimport 如何处理字符串参数

c#
小樊
122
2024-07-15 15:49:35
栏目: 编程语言

在C#中使用DllImport导入非托管函数时,如果要处理字符串参数,需要将字符串参数声明为IntPtr类型,然后使用Marshal.StringToHGlobalAnsi或Marshal.StringToHGlobalUni方法将字符串转换为指向非托管内存的指针,然后传递该指针给非托管函数。

以下是一个示例代码,演示如何处理字符串参数:

using System;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("YourDll.dll", CallingConvention = CallingConvention.Cdecl)]
    private static extern void YourFunction(IntPtr str);

    static void Main()
    {
        string inputString = "Hello World";

        IntPtr stringPointer = Marshal.StringToHGlobalAnsi(inputString);
        
        YourFunction(stringPointer);

        Marshal.FreeHGlobal(stringPointer);
    }
}

在上面的示例中,我们定义了一个名为YourFunction的非托管函数,接受一个指向字符串的指针作为参数。在Main方法中,我们首先将C#字符串转换为非托管内存中的指针,然后将该指针传递给YourFunction函数。最后,记得在使用完字符串指针后释放内存。

0