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];
}
...
}
對不起,我絕對不明白。你認爲什麼是錯的? – Radek
@GrantThomas:至少有時候,你可以('FieldOffset'允許你做聯合)。但是,我不確定數組。 – SLaks