2013-05-28 2 views
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]; 
    } 
    ... 
} 
+0

죄송 합니다만, 나는 이해하지 못합니다. 뭐가 잘못됐다고 생각하니? – Radek

+0

@GrantThomas : 적어도 때때로, 당신은 할 수 있습니다 ('FieldOffset'는 당신이 노동 조합을 만들 수있게합니다). 그러나 배열에 대해서는 잘 모르겠습니다. – SLaks

답변

1

문제는 컴파일했다. 나는 32b 프로세서를 만들었고 프로그램은 현재 작동 중이다.