Q&A

  • VC++ DLL을 다음과 고친 후 정상동작되는 것 같은데요..
안녕하세요.. 벌써 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같은곳에 뿌려 줄려구 하는데... 그건 어떻게 해야 하는지...



고수들의 답변 기다리겠습니다.

0  COMMENTS