안녕하세요.. 벌써 DLL conversion 질문을 세번째 드리는 것 같네요.
역시 고수의 길은 멀고도 험한 것 같습니다.
VC++ source의 형태는 아래와 같습니다.
WORD CALL MPS_OnCmm( BYTE, DWORD, WORD *, BYTE *);
그래도 저는 동적로딩을 이용해서 아래와 같이 고쳤습니다.
DWORD는 32 bit unsigned integer라서 Cardinal로 고쳤구요.
MPS_OnCmm: function(_1: BYTE; _2: Cardinal; var _3: PWord; var _4: PByte): Word; cdecl {$IFDEF WIN32} stdcall {$ENDIF};
그런데, 이 함수는 serial로 데이터를 보내어 특정 하드웨어에서 동작이 되는데, 이 하드웨어는 원하는대로 정상적으로 동작되는데, 실행하고나면 Acess violation이 일어나더라구요. 참고로 3번째 파라미터와 4번째 파라미터가 output 값입니다.
혹시 type casting이 잘못 되었는지요...
그리고 한 가지 더 물어볼 것은요.. 출력값을 editbox같은곳에 뿌려 줄려구 하는데... 그건 어떻게 해야 하는지...
고수들의 답변 기다리겠습니다.