2013-05-28 335 views
0

我嘗試從庫調用函數來獲取有關計算機的一些信息。然而,我得到一個異常SystemLoadException:從GetAlmMsg,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null輸入IODBPSD_3,第4個位置有一個對象,該對象被錯誤地舍入或被unobject數組覆蓋。你可以給一個建議做什麼?不幸的是,我根本不理解IODBPSD_3類的邏輯。非常感謝您的幫助。調用非託管dll時出錯

拉狄克

public Focas1.IODBPSD_3 prmData = new Focas1.IODBPSD_3();//my call 

....

//連接到FOCAS庫機器 - 不是我的代碼

public class Focas1 
{ 
    ... 

    public const short MAX_AXIS = 8; 

    [StructLayout(LayoutKind.Explicit)] 
     public class IODBPSD_3 
    { 
     [ FieldOffset(0)] 
     public short datano ; /* data number */ 
     [ FieldOffset(2)] 
     public short type ;  /* axis number */ 
     [ FieldOffset(4), 
     MarshalAs(UnmanagedType.ByValArray,SizeConst=MAX_AXIS)] 
     public byte[] cdatas = new byte[MAX_AXIS]; 
     [ FieldOffset(4), 
     MarshalAs(UnmanagedType.ByValArray,SizeConst=MAX_AXIS)] 
     public short[] idatas = new short[MAX_AXIS]; 
     [ FieldOffset(4), 
     MarshalAs(UnmanagedType.ByValArray,SizeConst=MAX_AXIS)] 
     public int[] ldatas = new int[MAX_AXIS]; 
    } 
    ... 
} 
+0

對不起,我絕對不明白。你認爲什麼是錯的? – Radek

+0

@GrantThomas:至少有時候,你可以('FieldOffset'允許你做聯合)。但是,我不確定數組。 – SLaks

回答

1

的問題是在編譯。我創建了32b處理器,程序正在運行。