Q&A

  • dll에서 Access violation 에러
procedure UnitProgramRun(udll,uproc, sub_prod : String ; const BHandle: HDBIDB);
type
  TProc = procedure(User_id,Uprod_Name: ShortString ; const DBHandle:  HDBIDB; H:integer); Stdcall ;
var
  H : THandle;
  Proc : TProc;
  DLLName, ProcName : String ;
  PCT_Database : HDBIDB;
begin
  DLLName  := udll;
  ProcName := uproc;
  PCT_Database := DBHandle;

  if Trim(DLLName) = '' then Exit ;
  H := LoadLibrary(PChar(DLLName));
  if H<32 then begin
    ShowMessage(DLLName+' 프로그램을 찾을 수가 없습니다.');
    Exit;
  end;

  @Proc := GetProcAddress(H, PChar(ProcName));
  if (@Proc = nil)  then
    ShowMessage(ProcName+' 함수를 찾을 수가 없습니다.')
  else Proc(User_ID,sub_prod,pct_database,H);   //에러가 나는 부분
end;

Proc(User_ID,sub_prod,pct_database,H)부분에서 에러가 나는데요
'aaa.dll'에서 Access violation 에러라는 군요..
여기를 진행해야 다음을 진행할텐데
정말 답답합니다...
아시는 분은 답변 부탁드립니다.
감사합니다

1  COMMENTS
  • Profile
    고지범 2002.09.19 22:36
    1.
    Proc이 이미 function pointer 인데 왜??
    @Proc := GetProcAddress(H, PChar(ProcName)); @를 붙이죠? @ 없는 것이 맞는 듯 한데...

    2.
    DLL 형식이 ShortString, String 을 인자로 사용하나요?
    공통인자를 위해서는 어떤 언어에 종속적인 것은 사용하지 않을 텐데... 모두 델파이로 개발 하셨다믄, 모르겠지만...

    3.
    Calling convention 은 서로 맞나요?
    양쪽 모두 stdcall 인 거 확인...

    위 123 확인 해 보셨음... 쩝 할 말 없음다.. ^^ㆀ

    그럼 오늘도 즐입다.