Tfpt = function():Boolean;
hld := LoadLibrary('D:\InchExcel\InchExcel.dll');
fpc := GetProcAddress(hld,'getTitleName');
if Tfpt(fpc)() then
  MessageDlg('this is test',mtInformation,[mbOK],0);
FreeLibrary(hld);

解决方案 »

  1.   

    执行后提示我访问冲突。WHY?
      

  2.   

    问题出在Tfpt function里吧。
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    type
      TFunc = function(x,y:integer):integer;stdcall;  //可能就是Stdcall的问题..
    var
      PFunc : TFarproc;
      Moudle: THandle;
      Func  : TFunc;
    begin
      Moudle := loadlibrary('E:\Dll\mydll2.dll');
      if Moudle>32 then
      begin
        PFunc:=GetProcAddress(Moudle,'min');
        Func:=TFunc(PFunc);
        showmessage(inttostr(Func(23,12)));  //这个换成你自己的Code就行了...
        Freelibrary(Moudle);
      end
      else showmessage('mei you');
    end;
      

  4.   

    楼上这位给的代码我试过了,错误还是一样,这里我说明一下,我调用的这个DLL是用VB写的,请大家再帮帮忙
      

  5.   

    改后的代码:
    procedure TForm1.Button1Click(Sender: TObject);
    type
      TFunc = function():integer;stdcall;
    var
      PFunc : TFarproc;
      Moudle: THandle;
      Func  : TFunc;
    begin
      Moudle := loadlibrary('D:\InchExcel\InchExcel.dll');
      if Moudle>32 then
      begin
        PFunc:=GetProcAddress(Moudle,'getTitleName');
        Func:=TFunc(PFunc);
        ShowMessage(inttostr(Func()));
        Freelibrary(Moudle);
      end
      else showmessage('mei you');
    end;