안녕하세요~
염치 불문하고 또 이렇게 질문을 올리게 됬네요..
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 에러를 뱉어 내는데요..
무엇이 잘못되었는지 모르겠습니다. ㅠㅠ
몇일째 고민 하고 있네요 ㅠㅠ
DLL에서는 string형대신에 PChar(or PAnsiChar)를 쓰세요.