Q&A

  • DLL 호출해서 사용 후 호출한 프로그램을 빠질때 error -도와주세요 긴급 !!!
프로그램에서 xxx.DLL을 호출해서 사용한 후 호출한 프로그램 종료시

다음 error가 뜹니다 (버전은 delphi3.0 이고요)



<메세지>

이 프로그램에서 잘못된 연산을 수행하여 종료됩니다.

문제가 지속되면 프로그램 구입업체에 문의하십시오.



자세한 내용을 클릭해보면....



04x!:00474adc의 모듈 SL_914.DLL에서 SL_060 잘못된 페이지 오류 발생.

Registers:

EAX=0047694c CS=015f EIP=00474adc EFLGS=00010202

EBX=0047694c SS=0167 ESP=0063fe70 EBP=006403f8

ECX=00000001 DS=0167 ESI=006403f4 FS=65ff

EDX=006403f4 ES=0167 EDI=006404f8 GS=0000

BCS:EIP:에 바이트 수

68 00 04 00 00 8d 44 24 04 50 8b 43 04 50 8b 03

Stack dump:



-----------------------------------------------------------------------

호출프로그램에서 선언은 이렇게 했어요



function func_pass(var GstrPNO_P:string; var GstrPASS_P:string;

var GstrPRIV_P:string; var GstrST_P:string):longint;stdcall;external 'xxx.dll';



-----------------------------------------------------------------------

호출루틴은 다음과 같고요



GstrPno_P:=GstrID_pno;

rv:=func_pass(GstrPno_P,GstrPass_P,GstrPriv_P,GstrSt_P);



if rv<>1 then begin

showmessage(GstrID_pno+' 님 패스워드가 다릅니다');

exit;

end;



1  COMMENTS
  • Profile
    화랑 2001.03.13 01:41
    솔직히 이답이 맞는지는 모르겠지만.. 화랑의 작은생각입니다..



    DLL에다가 String이 넘기고 받을려면... 델파이에서는 Sharemem(?)이가를



    uses 젤 첨에 써야 합니다.. (반드시) 근데 이렇게 하면 배포할때도..



    연관된 DLL을 공급해야 합니다..



    차라리.. PChar로 바꾸심이...







    종철이 wrote:

    > 이 프로그램에서 잘못된 연산을 수행하여 종료됩니다.

    > 문제가 지속되면 프로그램 구입업체에 문의하십시오.

    >

    > 내용은....

    >

    > 04x!:00474adc의 모듈 SL_914.DLL에서 SL_060 잘못된 페이지 오류 발생.

    > Registers:

    > EAX=0047694c CS=015f EIP=00474adc EFLGS=00010202

    > EBX=0047694c SS=0167 ESP=0063fe70 EBP=006403f8

    > ECX=00000001 DS=0167 ESI=006403f4 FS=65ff

    > EDX=006403f4 ES=0167 EDI=006404f8 GS=0000

    > BCS:EIP:에 바이트 수

    > 68 00 04 00 00 8d 44 24 04 50 8b 43 04 50 8b 03

    > Stack dump:

    >

    > -----------------------------------------------------------------------

    > 호출루틴은 다음과 같고요

    >

    > GstrPno_P:=GstrID_pno;

    > rv:=func_pass(GstrPno_P,GstrPass_P,GstrPriv_P,GstrSt_P);

    >

    > if rv<>1 then begin

    > showmessage(GstrID_pno+' 님 패스워드가 다릅니다');

    > exit;

    > end;

    >

    > -----------------------------------------------------------------------

    >

    > 선언은 이렇게 했어요

    >

    > function func_pass(var GstrPNO_P:string; var GstrPASS_P:string;

    > var GstrPRIV_P:string; var GstrST_P:string):longint;stdcall;external 'xxx.dll';

    >