C#string转c++ char*
C#使用IntPtr类型接受Marshal.StringToHGlobalAnsi分配的内存。
string sno = ""12345;
IntPtr strsno = Marshal.StringToHGlobalAnsi(sno);
Marshal.FreeHGlobal(strsno);//必须释放
IntPtr转string
string msg = Marshal.PtrToStringAnsi((IntPtr)pmsg);
结构体的转换 c#结构体和对应的c++结构体如下
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct SerialPort
{
public byte comno;
public byte btParity;
public byte btByteSize;
public byte btStopBits;
public uint dwBaudRate;
};
typedef struct tagSerialPort
{
unsigned char comno;
unsigned char btParity;
unsigned char btByteSize;
unsigned char btStopBits;
unsigned int dwBaudRate;
} _SERIAL_PORT;
转换代码如下