델파이에서는 DLL의 함수들을 엑세스하기 위해 C++ DLL과 마찬가지로 함수명을
external로 선언해서 씁니다. 즉,
function FuncA (N: integer): Integer; stdcall; external 'XXXX.DLL'
이렇게 선언하고 나중에 FuncA를 호출하면 'XXXX.DLL'이 프로그램 path에 있는한
이상없이 실행되지요. 이때는 프로그램의 시작과 동시에 델파이가 이 DLL을 로드
해주는 겁니다.
질문처럼 실행중에 DLL을 로드하려면 API를 써야 합니다. 즉, LoadLibray()를
써서 DLL을 메모리에 로드하고 GetProcAddress()를 써서 메모리에서의 주소를
구한다음 필요한 함수를 호출하는 거죠. 아래 예제를 참고하세요.
var
Hinst: THandle;
FPointer: TFarPorc;
Myfunct: TIntFunction;
begin
HInst := LoadLibrary('XXXX.DLL');
if HInst > 0 then
try
FPoineter := GetProcAddress(HInst, 'FuncA');
if FPointer <> nil then begin
MyFunct := TIntFunction (FPointer);
Label1.Caption := MyFunct (IntValue);
end;
else
ShowMessage('DLL function not found');
finally
FreeLibrary(HInst);
end
else
ShowMessage('Liabrary not found');
end;
|