程序中如果没有使用 Pos 的话,那么无聊如何都得不到该函数指针

解决方案 »

  1.   

    你是不是希望通过某个函数的名字来调用该函数呢?我知道在java和.net中可以通过reflection(反射)来做到这一点,但在delphi中如何做就不知道了。
      

  2.   

    如果程序link了调试信息,那么还有可能得到这个地址。
    否则就没戏了。
      

  3.   

    procedure TMainForm.Button1Click(Sender: TObject);
    type
      TAdd = function(X, Y: integer): integer; stdcall;
    var
      hDLL: THandle;
      Add: TAdd;
    begin
      hDLL := 0;
      try
        hDLL := LoadLibrary('DLLPrj.DLL');
        if (hDLL>0) then begin
          Add := GetProcAddress(hDLL, 'Add');
          Edit1.Text := IntToStr(Add(1, 2));
        end else begin
          raise Exception.Create('Load DLLPrj.DLL failed');
        end;//if
      finally
        Windows.FreeLibrary(hDLL);
      end;//try...finally
    end;