我写了一个dll
library dllTest;
uses
  SysUtils,
  Classes;{$R *.res}function Max(x,y,z:integer):integer; export;
begin
  result:=x;
  if x>y then result:=x;
  if Result<Z then result:=Z;
end;exports Max;begin
end.
又写了一个用dll的程序
unit usingDll;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form3: TForm3;
  function max(x,y,z:integer):integer; external 'DllTest.dll' ;implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
var n1,n2,n3:integer;
begin
    n1:=strtoint(edit1.Text);
    n2:=Strtoint(edit2.Text);
    n3:=strtoint(edit3.Text);
    showmessage(inttostr(Max(n1,n2,n3)));
end;end.
但是运行的时候出错误了 Entry point not found
can't locate max in dynamic library dlltest.dll
请问高手我哪里错了呢

解决方案 »

  1.   

    第一,DLL和EXE要放在同一目录下;第二,要在申明处加stdcall
      

  2.   

    DllTest.dll里定义的函数是:
    function Max(x,y,z:integer):integer; export;
    调用时是: 
    function max(x,y,z:integer):integer; external 'DllTest.dll' ;
    自然就找不到入口点了,调用时改为:
    ......
    function Max(x,y,z:integer):integer; external 'DllTest.dll' ;//大小写一致
    ......
      

  3.   

    function max(x,y,z:integer):integer; stdcall; external 'DllTest.dll' ;