我写了一个Dll,然后再写了一个测试程序调用它,奇怪的是我运行该程序,然后退出该程序,根本还没调用到DLL里面的函数(我把调用Dll里面的函数放在一个按钮Click事件里面,但是我没有点击那个按钮),退出时报错“A call to a OS Function Fail”,望DX们指点迷津。

解决方案 »

  1.   

    DLL-动态链接库
    是要用动态调用的,不过我对这个东东还不是很懂。
      

  2.   

    unit Unit1;interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      function InitConnStr(hd :Hwnd;Constr :String):boolean;stdcall;external 'xxx.dll';
    var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      InitConnStr(Application.Handle,'dfdfddfdf');
    end;
    我运行该程序,然后退出该程序,根本还没点击该按钮都会报错,郁闷!
    end.
      
      

  3.   

    DLL如果不是DELPHI写的,就不是STRING,很可能是PCHAR接口。
    我一个礼拜就看见3个人遇到这个问题,现在的年轻人怎么连最基本的原理都不去看。
      

  4.   

    不是楼上说的问题
    也不是调用问题看看DLL代码?
      

  5.   

    Constr是声明为Pchar类型的,我贴的时候贴错了。
      

  6.   

    直接在外面运行EXE是不报错的