0
回答
delphi 调用dell问题,如何加载释放
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   

我写了个activex控件,很奇怪如果,这个方法是try/finally则执行不成功,如果是try/except except里再alert一下则可以执行成功。不知道这里是不是异步的问题,sleep一下也不能成功。很头疼,我可以不释放dll吗?


procedure TActiveFormX.ReadCard;
type
  TByteFunc=function(readicseal:PAnsiChar;cardid:PInteger):byte;stdcall;
var
  Th:Thandle;
  Tf:TByteFunc;
  Tp:TFarProc;
  cardid:PInteger;
  readicseal:PAnsiChar;
  result:byte;
begin
  Th:=LoadLibrary('D:huanggangdll.dll'); {装载DLL}
  if Th>0 then
  begin
    try
      Tp:=GetProcAddress(Th,PChar('readiccard'));
      if Tp<>nil then
      begin
        Tf := TByteFunc(Tp);
        MessageBox(Handle,'分配内存','hello',mb_ok);
        GetMem(readicseal,4096);
        MessageBox(Handle,'调用方法','hello',mb_ok);
        result := Tf(readicseal,cardid);
        MessageBox(Handle,'方法调用结束','hello',mb_ok);
        MessageBox(Handle,readicseal,'hello',mb_ok);
      end
      else
      begin
        ShowMessage('TestC函数没有找到');
      end
    finally
      {Sleep(1000);如果我把finally换成except,并且在这里输出一条信息,则可以执行成功}
      FreeLibrary(Th); {释放DLL}
    end
  end
  else
  begin
    ShowMessage('dll没有找到');
  end
end;


另外请问大家,dll怎么和ocx一起打包,放到一起?


举报
一只小桃子
发帖于2年前 0回/76阅
顶部