参数好像可以直接传string类型

解决方案 »

  1.   

    你可以参考一下这个:UnmanagedType
      

  2.   

    char* System.String 或 System.StringBuilder ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconplatforminvokedatatypes.htm
      

  3.   

    看一下Tomgus(小桥流水) 提供的连接,直接使用String就可以了。
      

  4.   

    可以试试unsafe关键词:unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。可以在类型或成员的声明中使用 unsafe 修饰符。因此,类型或成员的整个正文范围均被视为不安全上下文。例如,以下是用 unsafe 修饰符声明的方法:unsafe static void FastCopy ( byte[] src, byte[] dst, int count )
    {
       // unsafe context: can use pointers here
    }
    不安全上下文的范围从参数列表扩展到方法的结尾,因此指针在以下参数列表中也可以使用:unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
    还可以使用不安全块从而能够使用该块内的不安全代码。例如:unsafe 
    {
       // unsafe context: can use pointers here
    }
    若要编译不安全代码,必须指定 /unsafe 编译器选项。无法通过公共语言运行库验证不安全代码。示例
    // cs_unsafe_keyword.cs
    // compile with: /unsafe
    using System;
    class UnsafeTest 
    {
       // unsafe method: takes pointer to int:
       unsafe static void SquarePtrParam (int* p) 
       {
          *p *= *p;
       }
       unsafe public static void Main() 
       {
          int i = 5;
          // unsafe method: uses address-of operator (&)
          SquarePtrParam (&i);
          Console.WriteLine (i);
       }
    }
    输出
    25
      

  5.   

    备注
    /unsafe 选项允许编译使用 unsafe 关键字的代码。在 Visual Studio 开发环境中设置此编译器选项 打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C# 项目属性。 
    单击“配置属性”文件夹。 
    单击“生成”属性页。 
    修改“允许不安全代码块”属性。
      

  6.   

    Wtypes.h 中的非托管类型    非托管C 语言类型    托管类名       说明 
    HANDLE                     void*               System.IntPtr  32 位 
    BYTE                       unsigned char       System.Byte    8 位 
    SHORT                      short               System.Int16   16 位 
    WORD                       unsigned short      System.UInt16  16 位 
    INT                        int                 System.Int32   32 位 
    UINT                       unsigned int        System.UInt32  32 位 
    LONG                       long                System.Int32   32 位 
    BOOL                       long                System.Int32   32 位 
    DWORD                      unsigned long       System.UInt32  32 位 
    ULONG                      unsigned long       System.UInt32  32 位 
    CHAR                       char                System.Char    用 ANSI 修饰。 
    LPSTR                      char*               System.String 或 System.StringBuilder 用 ANSI 修饰。 
    LPCSTR                     Const char*         System.String 或 System.StringBuilder 用 ANSI 修饰。 
    LPWSTR                     wchar_t*             System.String 或 System.StringBuilder 用 Unicode 修饰。 
    LPCWSTR                     Const wchar_t*      System.String 或 System.StringBuilder 用 Unicode 修饰。 
    FLOAT                      Float                System.Single 32 位 
    DOUBLE                     Double                 System.Double 64 位