안녕하세요. 델파이를 사랑하시는 여러분..^^
다름이 아니라 VC++에서 작성된 DLL을 델파이에서 사용하려고 하는데 계속해서 에러가 발생을 하는군요..
아직 초보라 다른사람들이 작성한 내용을 보고 이리저리 아무리 해보아도 해결이 되질 않는군요..
VC++에서는 다음과 같이 정의를하였습니다.
extern "C" _declspec(dllimport) int ComDb(int nBSize, BYTE* DSc, BYTE* comData);
그리구 델파이에서는 다음과 같이 선언을 하였습니다.
function ComDb(nBSize: Integer; DSc: PByte; var ComData: PByte): Integer; stdcall; external 'Com.dll'
이렇게 사용을 했는데 계속해서 에러가 발생을 하네요..
VC++의 BYTE* DSC 와 델파이의 DSc: PByte 랑은 서로 호환되는것이 아닌가요?
제발 아시는 분은 알려주세요..^^
그럼, 즐거운 하루가 되세요..
고드름 김정입니다.
VC++ 에서 만들어진 함수들은 호출 규약이 기본으로 cdecl방식입니다.
그런데 아래에 Delphi에서 선언한 방식은 stdcall로 하셨군요. ㅠ.ㅠ
이 부분 때문에 그러신 것 같습니다. 바꾸고 사용해보세요.
( 호출규약에 대한 자세한 설명은 델파이 헬프를 참고하세요.
밑에 질문답 중에서도 있었습니다만... )
그리고 var도 역시 빼셔야할 것 같습니다.
(var은 reference 참조일 때 사용하는 것입니다.)
참고하세요.
그럼.
박대규 wrote:
> 안녕하세요. 델파이를 사랑하시는 여러분..^^
>
> 다름이 아니라 VC++에서 작성된 DLL을 델파이에서 사용하려고 하는데 계속해서 에러가 발생을 하는군요..
> 아직 초보라 다른사람들이 작성한 내용을 보고 이리저리 아무리 해보아도 해결이 되질 않는군요..
>
> VC++에서는 다음과 같이 정의를하였습니다.
>
> extern "C" _declspec(dllimport) int ComDb(int nBSize, BYTE* DSc, BYTE* comData);
>
> 그리구 델파이에서는 다음과 같이 선언을 하였습니다.
>
> function ComDb(nBSize: Integer; DSc: PByte; var ComData: PByte): Integer; stdcall; external 'Com.dll'
>
> 이렇게 사용을 했는데 계속해서 에러가 발생을 하네요..
>
> VC++의 BYTE* DSC 와 델파이의 DSc: PByte 랑은 서로 호환되는것이 아닌가요?
> 제발 아시는 분은 알려주세요..^^
>
> 그럼, 즐거운 하루가 되세요..
>
>