RGB Board를 사용해서 프로그램을 만들고 있습니다.
Board에서 제공하는 sample은 VB로 되어 있습니다.
이것을 델파이로 바꾸는데 잘 안되네요.
Board는 자체 Dll을 제공합니다.
제공하는 Dll의 함수를 델파이에서 바로 호출하려고 하는데 에러가 납니다.
소스를 첨부합니다. 고수님들의 지도 부탁합니다.
procedure TForm1.Button1Click(Sender: TObject);
var
handle:Thandle;
begin
handle:=LoadLibrary('Fpv32.dll');//RGB Borad에서 제공하는 Dll
Fpv_VideoLive(true,align_any);-->여기에서 함수를 알 수 없다는 에러 발생
//Fpv32.dll에서 제공하는 함수
FreeLibrary(handle);
end;
DLL을 사용하기 위해선 DLL내의 함수의 포인터를 알아야 합니다.
이는 GetProcAddress로 구할 수 있습니다.
아래의 예제를 참조해 해 주시기 바랍니다.
procedure TForm1.Button1Click(Sender: TObject);
type
// 호출할 함수의 함수의 형태
TCallMeDll = function(a,b: Integer): string;
var
CallMeDll: TCallMeDll;
FuncPtr: TFarProc;
hDll: THandle;
result: string;
begin
hDll:=LoadLibrary('Mytestdll.dll');
// CallMe라는 이름의 함수의 포인트를 얻는다.
FuncPtr:=GetProcAddress(hDLL,'CallMe');
// 얻은 포인트를 호출할 형태로 만들기 위해 다시 포인트 지정
@CallMeDll:=FuncPtr;
if @CallMeDll <> nil then result:=CallMeDll(4,5);
FuncPtr:=nil;
FreeLibrary(hDll);
end;
장일형 께서 말씀하시기를...
> RGB Board를 사용해서 프로그램을 만들고 있습니다.
> Board에서 제공하는 sample은 VB로 되어 있습니다.
> 이것을 델파이로 바꾸는데 잘 안되네요.
> Board는 자체 Dll을 제공합니다.
> 제공하는 Dll의 함수를 델파이에서 바로 호출하려고 하는데 에러가 납니다.
> 소스를 첨부합니다. 고수님들의 지도 부탁합니다.
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> handle:Thandle;
> begin
> handle:=LoadLibrary('Fpv32.dll');//RGB Borad에서 제공하는 Dll
> Fpv_VideoLive(true,align_any);-->여기에서 함수를 알 수 없다는 에러 발생
> //Fpv32.dll에서 제공하는 함수
> FreeLibrary(handle);
> end;
>