Q&A

  • VC++에서 작성된 DLL을 델파이에서 사용하려면..
안녕하세요. 델파이를 사랑하시는 여러분..^^



다름이 아니라 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 랑은 서로 호환되는것이 아닌가요?

제발 아시는 분은 알려주세요..^^



그럼, 즐거운 하루가 되세요..





1  COMMENTS
  • Profile
    김정 2000.10.18 08:34
    안녕하세요?

    고드름 김정입니다.



    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 랑은 서로 호환되는것이 아닌가요?

    > 제발 아시는 분은 알려주세요..^^

    >

    > 그럼, 즐거운 하루가 되세요..

    >

    >