성태님 홈페이지에도 질문 글 올리신 분 맞지 않나 싶은데요.
어쨋든 그 정도로 잘 안될 경우에는 먼저 C++에서 호출이 되는지 확인을 해 보시고
그 다음에 그 코드를 이용해서 C++/CLI로 감싸보는 것도 방법이지 싶네요.
만약 C++에서도 비슷한 문제가 나온다면 호출 자체가 안된다는 거니까요.
먼저, 다차원배열의 마샬링은 안되는 것으로 알고 있어요. 대신 1차원 배열로 받고 처리하시면 됩니다. 그리고 SafeArray가 아닌 이상 [MarshalAs(UnmanagedType.ByValArray, SizeConst = xxxx)] 형태의 SizeConst를 지정하셔야 할꺼에요.
델파이에서 만든 DLL이 일단 StdCall 콜링 컨벤션을 쓰지 않을 수도 있을 것 같은데요, 이러면 GetData라는 함수를 다른 델파이 코드에서 사용할 수 있도록 Stub Delphi 코드가 있어야 닷넷이 아니라 다른 곳에서도 API를 쓸 수 있기 때문에 일단 관련 코드가 있는지 다시 한 번 꼭 찾아보셨으면 좋겠습니다. 즉, 델파이 코드로 된 DLL 호출 샘플이 있는지 꼭 한 번 보시라는 말씀을 드립니다.
만약 그런 파일이 없다면, Trial and Error를 반복하면서 런타임 안정성 저하 MDA가 닷넷 디버거 쪽에서 나오지 않을 때까지 충분히 테스트를 반복하면서 정확한 signature를 잡으셔야만 합니다. 이 부분을 제대로 마치지 않고 프로덕션에 애플리케이션을 배포하면 메모리 누수나 여러 문제가 발생해서 품질이 크게 떨어질 수 있습니다.