0
라이브러리에 대한 정보를 얻기 위해 함수를 호출하려고합니다. 하지만 예외가 발생합니다 SystemLoadException : GetAlmMsg, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null에서 IODBPSD_3을 (를) 읽을 수 없습니다. 객체가 4 번째 위치에 잘못 반올림되거나 객체가 아닌 배열로 덮여 있습니다. 무엇을해야할지 조언 해 주시겠습니까? 불행히도 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