W
wzs4743
Unregistered / Unconfirmed
GUEST, unregistred user!
我正用一块采集卡开发程序
圆刚出的
但是由于在程序中要用到两路视频的切换,不想用控件的形式,因为它提供的是对话框
而这样当用户每次切换时要在对话框中操作,想用DLL的函数,可是没法调用成功
帮帮兄弟吧!
DLL的名字为AVER32.DLL
含有如下函数声名
bool far pascal _export aver_init(hwnd,bool);
void far pascal _export aver_close(void);
我在程序里是这样写的,可以编译通过,执行时出错
错误提示为access violation at address 00000001 read of address ffffffff
我不知道那里错了,请帮我分析一下
taver_init1=function(nowhwnd:hwnd;overlay:boolean):boolean;stdcall;
taver_init2=procedure;stdcall;
然后在 implementation 内
var
handle:thandle;
l_averinit1:taver_init1;
l_averinit2:taver_init2;
procedure usedll;
begin
handle:=loadlibrary('aver32.dll');
if handle<=0 then
begin
raise exception.create('load dll error');exit end;
@l_averinit1:=getprocaddress(handle,'aver_init');
@l_averinit2:=getprocaddress(handle,'aver_close');end;
procedure tform1.button1click(sender:tobject);
begin
usedll;
l_averinit1(form1.handle,false);
end;
procedure tform1.button2click(sender:tobject);
begin
l_averinit2;
freelibrary(handle);
end;
圆刚出的
但是由于在程序中要用到两路视频的切换,不想用控件的形式,因为它提供的是对话框
而这样当用户每次切换时要在对话框中操作,想用DLL的函数,可是没法调用成功
帮帮兄弟吧!
DLL的名字为AVER32.DLL
含有如下函数声名
bool far pascal _export aver_init(hwnd,bool);
void far pascal _export aver_close(void);
我在程序里是这样写的,可以编译通过,执行时出错
错误提示为access violation at address 00000001 read of address ffffffff
我不知道那里错了,请帮我分析一下
taver_init1=function(nowhwnd:hwnd;overlay:boolean):boolean;stdcall;
taver_init2=procedure;stdcall;
然后在 implementation 内
var
handle:thandle;
l_averinit1:taver_init1;
l_averinit2:taver_init2;
procedure usedll;
begin
handle:=loadlibrary('aver32.dll');
if handle<=0 then
begin
raise exception.create('load dll error');exit end;
@l_averinit1:=getprocaddress(handle,'aver_init');
@l_averinit2:=getprocaddress(handle,'aver_close');end;
procedure tform1.button1click(sender:tobject);
begin
usedll;
l_averinit1(form1.handle,false);
end;
procedure tform1.button2click(sender:tobject);
begin
l_averinit2;
freelibrary(handle);
end;