DLL을 통해서 타프로그램에 서비스를 하려고 합니다.
그런데 데이타 전달을 할 경우에 Integer나 PChar등은 문제가 없는데
구조체를 전달하려고 하니까 Error가 발생을 합니다.(Delphi에서 Call하면
문제가 없으나 Powerbuild에서 Call하면 Error 발생)
구조체 선언을 할때에 특별한 또다른 선언을 해야하는지 아니면
델파이에서는 Standard한 구조체 전달이 불가능한지 아시는분 있으면
답변바랍니다.(Please!!)
type
recIntLogin = record
nID : DWORD;
nPasswd : DWORD;
end;
function TransInteger( InLogin : recIntLogin; var OutLogin : recIntLogin ): Boolean; stdcall;
implementation
function TransInteger( InLogin : recIntLogin; var OutLogin : recIntLogin ): Boolean; stdcall;
begin
ShowMessage( 'TransInteger Called : ' + IntToStr( InLogin.nID ) + '/' + IntToStr( InLogin.nPasswd ) ); <- Display는 되지만 엉뚱한 값이 Display
OutLogin.nID := InLogin.nID; <- 이 부분에서 Ploting Point Error발생
OutLogin.nPasswd := InLogin.nPasswd;
result := TRUE;
end;
혹 도움이 될까해서 답변을 드립니다.
DLL을 작성하실때 'DWORD' type을 사용하지 마시고 (Power Builder에 이런 Type이 있나여? 안써봐서 모르겠네요..) LongWord type을 사용해 보세요.
제 생각엔 각 언어에서 재정의된 Type말고 Window에서 기본적으로 사용되는 표준 Type을 사용하면 해결되지 않을까 하네요..
혹 틀리더라도 넘 면박주지 마세요.. T.T
약간의 도움이라도 되었길..
최경훈 wrote:
> DLL을 통해서 타프로그램에 서비스를 하려고 합니다.
>
> 그런데 데이타 전달을 할 경우에 Integer나 PChar등은 문제가 없는데
>
> 구조체를 전달하려고 하니까 Error가 발생을 합니다.(Delphi에서 Call하면
> 문제가 없으나 Powerbuild에서 Call하면 Error 발생)
>
> 구조체 선언을 할때에 특별한 또다른 선언을 해야하는지 아니면
>
> 델파이에서는 Standard한 구조체 전달이 불가능한지 아시는분 있으면
>
> 답변바랍니다.(Please!!)
>
> type
> recIntLogin = record
> nID : DWORD;
> nPasswd : DWORD;
> end;
>
> function TransInteger( InLogin : recIntLogin; var OutLogin : recIntLogin ): Boolean; stdcall;
>
> implementation
>
> function TransInteger( InLogin : recIntLogin; var OutLogin : recIntLogin ): Boolean; stdcall;
> begin
> ShowMessage( 'TransInteger Called : ' + IntToStr( InLogin.nID ) + '/' + IntToStr( InLogin.nPasswd ) ); <- Display는 되지만 엉뚱한 값이 Display
> OutLogin.nID := InLogin.nID; <- 이 부분에서 Ploting Point Error발생
> OutLogin.nPasswd := InLogin.nPasswd;
> result := TRUE;
> end;
>
>
>