Q&A

  • 28203질문 추가 질문합니다.


VC++ DLL 에서 string 값을 return 받고 싶습니다.



DLL 함수에선 string 값이 맞지만



델파이에 return 값은 아무것도 없고...



이렇게 하는 거 아닌가요? 자세하게 잘못된 점을 지적해 주시면 감사하겠습니다.



너무 기본이 없어 힘듭니다. 좀 도와주십시오..









<< 델파이 >>





function dl_getdigs(line : Integer; count : Integer; var dgts:PChar): Boolean;

stdcall; external 'DIALOGIC.DLL' name 'dl_getdigs';





var

dgts : PChar;

gdate : String;



begin

dl_getdigs(line, 4, dgts);

gdate := StrPas(dgts);



ShowMessage (gdate); // ===> 아무것도 없어요..



if temp <> '#' then



end;







<< VC++ >> DLL



extern "C" _declspec(dllexport) bool dl_getdigs(int line, int count, char *gdgts);



_declspec(dllexport) bool dl_getdigs(int line, int count, char *gdgts)

{



/// 생략



temp.Format ("dgts : %s" , gdgts); // ===> 여기에선 값이 맞아요

AfxMessageBox(temp);



return TRUE;





}

2  COMMENTS
  • Profile
    김하늘 2000.10.14 21:03
    function dl_getdigs(line : Integer; count : Integer; dgts:PChar): Boolean;

    stdcall; external 'DIALOGIC.DLL' name 'dl_getdigs';

    이런식으로 함 바꿔보세요 될지는 모르지만...



    windows uses절을 보니

    이런식으로으로 되있던데요

    유사한 평션에 보니 인자1에서 인자2로 복사하던가

    아님 반대로 복사를 하지여...

    근데 여기에는 var라는 참조 호출인자가 빠져있네여

    function lstrcpy(lpString1, lpString2: PChar): PChar; stdcall;...



    초보 wrote:

    >

    > VC++ DLL 에서 string 값을 return 받고 싶습니다.

    >

    > DLL 함수에선 string 값이 맞지만

    >

    > 델파이에 return 값은 아무것도 없고...

    >

    > 이렇게 하는 거 아닌가요? 자세하게 잘못된 점을 지적해 주시면 감사하겠습니다.

    >

    > 너무 기본이 없어 힘듭니다. 좀 도와주십시오..

    >

    >

    >

    >

    > << 델파이 >>

    >

    >

    > function dl_getdigs(line : Integer; count : Integer; var dgts:PChar): Boolean;

    > stdcall; external 'DIALOGIC.DLL' name 'dl_getdigs';

    >

    >

    > var

    > dgts : PChar;

    > gdate : String;

    >

    > begin

    > dl_getdigs(line, 4, dgts);

    > gdate := StrPas(dgts);

    >

    > ShowMessage (gdate); // ===> 아무것도 없어요..

    >

    > if temp <> '#' then

    >

    > end;

    >

    >

    >

    > << VC++ >> DLL

    >

    > extern "C" _declspec(dllexport) bool dl_getdigs(int line, int count, char *gdgts);

    >

    > _declspec(dllexport) bool dl_getdigs(int line, int count, char *gdgts)

    > {

    >

    > /// 생략

    >

    > temp.Format ("dgts : %s" , gdgts); // ===> 여기에선 값이 맞아요

    > AfxMessageBox(temp);

    >

    > return TRUE;

    >

    >

    > }

  • Profile
    초보 2000.10.15 00:47




    알려주신 내용 감사합니다.



    알려주신 방법으로 했는데 제가 원하는 결과값이 안 나오네요..



    좀더 자세한 설명 부탁드립니다.





    > 초보 wrote:

    > >

    > > VC++ DLL 에서 string 값을 return 받고 싶습니다.

    > >

    > > DLL 함수에선 string 값이 맞지만

    > >

    > > 델파이에 return 값은 아무것도 없고...

    > >

    > > 이렇게 하는 거 아닌가요? 자세하게 잘못된 점을 지적해 주시면 감사하겠습니다.

    > >

    > > 너무 기본이 없어 힘듭니다. 좀 도와주십시오..

    > >

    > >

    > >

    > >

    > > << 델파이 >>

    > >

    > >

    > > function dl_getdigs(line : Integer; count : Integer; var dgts:PChar): Boolean;

    > > stdcall; external 'DIALOGIC.DLL' name 'dl_getdigs';

    > >

    > >

    > > var

    > > dgts : PChar;

    > > gdate : String;

    > >

    > > begin

    > > dl_getdigs(line, 4, dgts);

    > > gdate := StrPas(dgts);

    > >

    > > ShowMessage (gdate); // ===> 아무것도 없어요..

    > >

    > > if temp <> '#' then

    > >

    > > end;

    > >

    > >

    > >

    > > << VC++ >> DLL

    > >

    > > extern "C" _declspec(dllexport) bool dl_getdigs(int line, int count, char *gdgts);

    > >

    > > _declspec(dllexport) bool dl_getdigs(int line, int count, char *gdgts)

    > > {

    > >

    > > /// 생략

    > >

    > > temp.Format ("dgts : %s" , gdgts); // ===> 여기에선 값이 맞아요

    > > AfxMessageBox(temp);

    > >

    > > return TRUE;

    > >

    > >

    > > }