本來有點懶,不過還是記一下。
使用HPSocket項目碰到C#調用結果不符合預期,也提了這個問題。
最終發現是c++中的bool類型為1 byte,而c#中采用4 bytes導致,需要在DllImport時,使用
[DllImport(HPSOCKET_DLL_PATH, CharSet = CharSet.Ansi, SetLastError = true)]
[return:MarshalAs(UnmanagedType.I1)]
public static extern bool HP_Server_HasStarted(IntPtr pServer);
額外處理返回值。