看板 C_Sharp 關於我們 聯絡資訊
各位版大好 我最近在使用real time軟體(RTX)撰寫運動控制程式 須用到共用記憶體的技術 程式碼如下: public struct ShareMem { public byte[] A; } [DllImport("rtapi_w32.dll", CharSet = CharSet.Auto)] static extern int RtCreateSharedMemory( int flProtect, int dwMaximumSizeHigh, int dwMaximumSizeLow, [MarshalAs(UnmanagedType.LPWStr)] string lpName, ref IntPtr location); ShareMem RTXDataPtr; public void InitShareMemory(){  RTXDataPtr.A = new byte[4];  pCMD0 = Marshal.AllocHGlobal(Marshal.SizeOf(RTXDataPtr));  hCMD0 = RtCreateSharedMemory(1, 0, Marshal.SizeOf(RTXDataPtr), "RTX_DATA", ref pCMD0);  RTXDataPtr = (ShareMem)Marshal.PtrToStructure(pCMD0, typeof(ShareMem)); } 現在的問題是當我使用程式碼如 RTXDataPtr.A[0] = 1; 時會產生"並未將物件參考設定為物件的執行個體"的錯誤訊息 請問我該如何修正程式碼? 感謝! PS:RtCreateSharedMemory為RTX軟體提供的函式,其原始呼叫碼如下: HANDLE RTAPI RtCreateSharedMemory( DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName, VOID ** location ); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.118.185 ※ 編輯: immj 來自: 122.117.118.185 (10/13 12:34)