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 에러라는 군요..
여기를 진행해야 다음을 진행할텐데
정말 답답합니다...
아시는 분은 답변 부탁드립니다.
감사합니다
Proc이 이미 function pointer 인데 왜??
@Proc := GetProcAddress(H, PChar(ProcName)); @를 붙이죠? @ 없는 것이 맞는 듯 한데...
2.
DLL 형식이 ShortString, String 을 인자로 사용하나요?
공통인자를 위해서는 어떤 언어에 종속적인 것은 사용하지 않을 텐데... 모두 델파이로 개발 하셨다믄, 모르겠지만...
3.
Calling convention 은 서로 맞나요?
양쪽 모두 stdcall 인 거 확인...
위 123 확인 해 보셨음... 쩝 할 말 없음다.. ^^ㆀ
그럼 오늘도 즐입다.