Q&A

  • DLL 호출 질문이예요~ 2




안녕하세요~

염치 불문하고 또 이렇게 질문을 올리게 됬네요..

DLL에 있는 함수를 호출하게 되면 엑세스 바이올레이션 에러가 발생하게 되서 올리게 되었습니다.

DLL에 있는 다른 함수에서는 발생 안했었는데 해당 함수만 발생을 하네요;;

그래서 뭐가 문제가 있나 이것저것 하다 보니 리턴 값에 대한 주소 값이 변하는것을 확인하게 되었습니다.

- DLL 원형
  -> int WINAPI GetName(LPCTSTR lpszDest);

- Delphi Source
<!--CodeS-->

function GetName(strDevice: string): integer; stdcall; external 'ProcName.DLL';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  iRtn : Integer;
begin
  iRtn := GetName('MINI');  <- 첨부파일 첫번째 시점

  if iRtn > 0 then <- 첨부파일 두번째 시점
  begin
    ShowMessage('성공');
  end
  else
  begin
    ShowMessage('실패');
  end;
end;

<!--CodeE-->

함수호출 시점에서 iRtn 의 주소 값이 if문에 갈때 변하게 됩니다.

그러면서 Access Violation 에러를 뱉어 내는데요..

무엇이 잘못되었는지 모르겠습니다. ㅠㅠ

몇일째 고민 하고 있네요 ㅠㅠ
1  COMMENTS
  • Profile
    최용일 2010.12.14 03:41
    DLL이군요.
    DLL에서는 string형대신에 PChar(or PAnsiChar)를 쓰세요.