//Test.dll中函数原型
extern "C" __declspec(dllexport) long __stdcall Init(
char* UserName,
char* UserPass);//在源程序中调用
namespace cc
{
        [DllImport("Test.dll", EntryPoint = "Init")]
        public static extern long Init(?, ?);
}如何申明init();
C#中没有指针怎么定义成char*类型

解决方案 »

  1.   

    [DllImport("Test.dll", EntryPoint = "Init")] 
            public static extern long Init([MarshalAs(UnmanagedType.LPWStr] UserName, [MarshalAs(UnmanagedType.LPWStr] UserPass); 
      

  2.   

    StringBuilder str=new StringBuilder("UserName");
    然后将  str 传入就OK了.
      

  3.   

    [DllImport("Test.dll", EntryPoint = "Init")] 
            public static extern long Init([MarshalAs(UnmanagedType.LPWStr] string UserName, [MarshalAs(UnmanagedType.LPWStr]string UserPass); 
      

  4.   

    使用上述两种方法
    调用Init("admin","123");//DLL中账号匹配正确return 0,错误return 1;
    然后我在页面的text中输出,
    为什么我返回的都是两串数字,如输出  440069599052955649
      

  5.   

    使用
    [DllImport("Test.dll", EntryPoint = "Init")]
            public static extern long Init([MarshalAs(UnmanagedType.LPWStr)] string UserName, [MarshalAs(UnmanagedType.LPWStr)]string UserPass);
    返回的数字一样使用
    public static extern long Init(StringBuilder UserName, StringBuilder UserPass);
    返回的数字不一样怎么回事呢?