在调用DLL时,定义的接口函数方式为:
function CloseComm:boolean; stdcall external 'aaa.dll';
然后在事件中调用:
procedure TForm1.BtnCloseComClick(Sender: TObject);
begin
  CloseComm;
end;
------------------------------------------------------------
编译能通过,执行程序,然后什么操作都不错,直接点击关闭,就会弹出抛出异常信息:“System Error. Code 2.系统找不到指定的文件。”
这是什么原因造成的?
这个DLL肯定是正确的。调用方式也是正确的。我在其他Delphi程序中已经使用过,另外用C#也调用过,没问题的。

解决方案 »

  1.   

    这样的话可能是系统或者delphi本身的问题了
      

  2.   

    但是同样的调用该DLL的程序,只是那个程序更加完整一些,并没有出错啊。
      

  3.   

    你引用shareMan 这个单元没有啊!
      

  4.   

    在这个调用DLL程序应该是不需要引用shareMem的吧。并不是所有调用DLL程序都要用的啊。
      

  5.   

    我尝试着在USES引用文件的第一个地方加入 sharemem文件,运行程序。现在的提示变成了:
    “Invalid Pointer operation”.
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls ;type
      TForm1 = class(TForm)
        Label1: TLabel;
        EdtCardNo0: TEdit;
        EdtCardNo1: TEdit;
        EdtCardNo2: TEdit;
        EdtCardNo3: TEdit;
        BtnOpenCom: TButton;
        Button1: TButton;
        lbMsg: TLabel;
        BtnCloseCom: TButton;
        Button2: TButton;
        procedure BtnCloseComClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation {$R *.dfm}
     function OpenComm(CommN,BaudRate:integer):boolean;stdcall external 'aaa.dll';
     function CloseComm:boolean; stdcall external 'aaa.dll';{ TForm1 }procedure TForm1.BtnCloseComClick(Sender: TObject);
    begin
      if CloseComm then
        ShowMessage('关闭端口成功!')
      else
        ShowMessage('关闭端口失败!');
    end;end.
      

  7.   

    标准的数据类型可以不用sharamem的,你的dll代码呢?
      

  8.   

    dll是厂家提供的,我们是没有具体代码的。
      

  9.   

    操作系统是什么,
    到win98下试一试