我自己写的DLL,为啥调用的时候老是出现这个对话框啊?
说什么无法定位程序输入点SETPASSWORD(我定义的一个函数)于动态链接库DLLPASSWORD.DLL(动态链接库文件的名称)上.
这是怎么一回事啊?

解决方案 »

  1.   

    就是没有定位到啦。。你看看你的路径是否正确。如果路径正确,看看DLL是否有问题。
      

  2.   

    file dllpassword.pas
    --------------------
    library DllPassWord;
    uses
      uGetPassWd in 'uGetPassWd.pas' {frmTestPassWord},
      uSetPassWd in 'uSetPassWd.pas' {frmSetPassWord};{$R *.res}
    exports
      TestPassword,SetPassWord;
    beginend.file uGetPassWd.pas
    ---------------------------
    unit uGetPassWd;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;type
      TfrmTestPassWord = class(TForm)
        BitBtn1: TBitBtn;
        Edit1: TEdit;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    function TestPassword(Password: PChar): Boolean;
    implementation{$R *.dfm}
    function TestPassword(Password: PChar): Boolean;
    var frmTestPassWord:TfrmTestPassWord;
    begin
      frmTestPassWord:=tfrmTestPassWord.Create(nil);
      result:=false;
      with frmTestPassWord do
      try
        showmodal;
        if password<>UpperCase(edit1.Text) then
          messagedlg('Password is fault!',mtwarning,[mbok],0)
        else
          result:=true;
      finally
        frmTestPassWord.Free;
      end;
    end;end.file uSetPassWd
    ------------------------
    unit uSetPassWd;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;type
      TfrmSetPassWord = class(TForm)
        Label1: TLabel;
        Edit1: TEdit;
        btnOk: TBitBtn;
        BitBtn2: TBitBtn;
        procedure FormCanResize(Sender: TObject; var NewWidth,
          NewHeight: Integer; var Resize: Boolean);
        procedure FormCreate(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        Vertify:boolean;
      public
        PassWord:pchar;
      end;
    function SetPassWord(aPassword: PChar):boolean;
    implementation{$R *.dfm}
    function SetPassWord(aPassword: PChar):boolean;
    var frmSetPassWord : TfrmSetPassWord;
    begin
      result:=false;
      frmSetPassWord:=tfrmSetPassWord.Create(nil);
      with frmSetPassWord do  begin
        if showmodal=mrok then begin
          result:=true;
          StrCopy(aPassword,StrUpper(Password));
        end;
      end;
    end;procedure TfrmSetPassWord.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    begin
      resize:=false;
    end;procedure TfrmSetPassWord.FormCreate(Sender: TObject);
    begin
      passWord:=stralloc(40);
      vertify:=false;
      label1.Caption:='Please enter the password.';
    end;procedure TfrmSetPassWord.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin   
      if key=#13 then
        begin
          if not vertify  then  begin
            vertify:=true;
            edit1.Text:='';
            label1.Caption:='Please vertify the password.';  //重复密码
            strpcopy(password,UpperCase(edit1.Text));
            edit1.SetFocus;
          end
          else begin
            if strpas(password)<>UpperCase(edit1.Text) then begin
              vertify:=false;
              edit1.Text:='';
              label1.Caption:='Please enter the password.';
              edit1.SetFocus;
            end
            else begin
              btnok.Enabled:=true;
              btnok.SetFocus;
              edit1.Enabled:=false;
            end;
          end;
          key:=#0;
        end;
    end;end.------------------------------
    开始调用
    file uMain.pas
    -----------------------------
    unit uMain;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btSetPassWord: TButton;
        btTestPassWord: TButton;
        Edit1: TEdit;
        procedure btSetPassWordClick(Sender: TObject);
        procedure btTestPassWordClick(Sender: TObject);
      private
        password:pchar;
      public
        { Public declarations }
      end;var
      Form1: TForm1;
                                                                                    
    function SetPassword(aPassword: PChar): Boolean;stdcall;external 'DllPassWord.dll';
    function TestPassword(Password: PChar): Boolean;stdcall;external 'DllPassWord.dll';implementation{$R *.dfm}procedure TForm1.btSetPassWordClick(Sender: TObject);
    begin
      setpassword(password);
    end;procedure TForm1.btTestPassWordClick(Sender: TObject);
    begin
      testpassword(strpcopy(password,edit1.Text));
    end;end.
    -----------------------------------------------
    大家帮帮忙看看把。
      

  3.   

    exports
      TestPassword,SetPassWord;function SetPassword(aPassword: PChar): Boolean;stdcall;external 'DllPassWord.dll';
    function TestPassword(Password: PChar): Boolean;stdcall;external 'DllPassWord.dll';SetPassword大小写要保持一致。
      

  4.   

    哦,是的,是这个原因,谢谢!!
    不过我很奇怪,DELPHI不是不区分大小写的嘛!
    怎么到了DLL就要区分啦,奇怪。
      

  5.   

    傻鸟  在函数后面加一个Stdcall