Q&A

  • c++에서만든 dll파일의 함수를 델파이에서 콜할때 EAccessvioration발행문제점입니다
최근에 c++에서 만든 dll파일의 함수를 사용할려구 하는데
>함수원형은 Tran(HWND hWnd,
>                             BYTE *ADDR,            /* INPUT:접속소켓주소  16자리*/
>                             BYTE *PORTNO,          /* INPUT:접속포트번호   5자리*/
>                             BYTE *TID,             /* INPUT:단말기번호    10자리*/
>                             BYTE *JobFlag,         /* INPUT:작업구분       1자리 (O:송신,I:수신) */
>                             BYTE *FilePath,        /* INPUT:파일이름     256자리*/
>                             BYTE *FileSize,        /* INPUT:파일크기       8자리*/
>                             BYTE *FileRecCnt,      /* INPUT:레코드건수     8자리*/
>
>                             BYTE *ReplyCode,       /* [OUTPUT]응답코드     4자리*/
>                             BYTE *ReplyMsg)        /* [OUTPUT]응답메시지 128자리*/ 와 같이 구성되어 있고요
>vb에서는 에러 발생없이 실행이 가능한데 델파이에서는 안됩니다.
>델파이에서는 다음과같이 선언한후
>function Tran( handle : HWND; addr, portno, tid, jobflag, filepath, filesize, filerecoount, rcode,Rmsg:string):longword; stdcall;external 'CB.DLL';
>다음과 같이
>Tran(handle,pbyte(addr),pbyte(portno),Pbyte(tid),Pbyte(job),Pbyte(filepath),pbyte(filesize),pbyte(rcount),pbyte(rcode),pbyte(rmsg));는데 뭐가 잘못되었는 지 알수가 없습니다.
1  COMMENTS
  • Profile
    최용일 2005.12.22 10:12
    안녕하세요. 최용일입니다.

    함수원형에서 파라매터는 BYTE *인데 선언해놓은것은 string이고 쓸때는 PByte로 넘겨주네요... ㅡㅡ'

    string은 델파이만의 고유한 형이기 때문에 서로 다른 언어로 된 DLL에서는 쓰일 일이 없습니다. 안쓰는게 좋습니다.

    함수원형만 가지고는 좀 알기 힘들지만... 사용하는 측에서 파라매터들을 정확한크기로 생성해서 넘겨줘야 할듯하구요, 호출방식도 stdcall인가 cdecl인가 다시 한번 확인해보세요...

    ^^ 항상 즐코하세요...