Win32API.CommonType.USER user = new Win32API.CommonType.USER();
byte[] byt = new byte[37];
#region 给unsafe区域变量赋值
unsafe
{
byte[] bytUN = System.Text.Encoding.GetEncoding("GB2312").GetBytes(strUserName);
for (int i = 0; i < bytUN.Length; i++)
{
user.szName[i] = (sbyte)bytUN[i];
}
}
byte[] buf = new byte[Marshal.SizeOf(user)];
IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buf, 0);
Marshal.StructureToPtr(user, ptr, true);
乱码是啥形式的,比如在Unicode情况下,女对应PE.也叫变成乱码了,但是其实是解码方式不同,C++默认开发如果是用VS,那么就是GB2312的,你试一试C#。
你dll能用unicode重新编译么,然后c#也配上unicode应该就统一了