최근에 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));는데 뭐가 잘못되었는 지 알수가 없습니다.
함수원형에서 파라매터는 BYTE *인데 선언해놓은것은 string이고 쓸때는 PByte로 넘겨주네요... ㅡㅡ'
string은 델파이만의 고유한 형이기 때문에 서로 다른 언어로 된 DLL에서는 쓰일 일이 없습니다. 안쓰는게 좋습니다.
함수원형만 가지고는 좀 알기 힘들지만... 사용하는 측에서 파라매터들을 정확한크기로 생성해서 넘겨줘야 할듯하구요, 호출방식도 stdcall인가 cdecl인가 다시 한번 확인해보세요...
^^ 항상 즐코하세요...