procedure TFormMain.btn1Click(Sender: TObject); begin //加载dll TReportConsoleLibWrapper.checkInitialize; try //创建一个接口,由DLL创建 with TReportConsoleLibWrapper.createReportConsole(createDefaultOperator) do try //调用接口方法,显示窗体 ShowConsole; finally //调用接口方法,释放窗体 FreeConsole; end; finally //释放dll TReportConsoleLibWrapper.checkFinalization; end; end;
以上代码点击按钮运行完后出错
稍微修改一下
procedure TFormMain.btn1Click(Sender: TObject); begin //加载dll TReportConsoleLibWrapper.checkInitialize; try //创建一个接口,由DLL创建 lvReportConsole:=TReportConsoleLibWrapper.createReportConsole(createDefaultOperator); with lvReportConsole do try //调用接口方法,显示窗体 ShowConsole; finally //调用接口方法,释放窗体 FreeConsole; end; //设置nil,会调用接口对象的.relase方法 必须在释放dll之前释放 //否则函数执行完成后释放领的接口对象时会出现异常.因为整个dll都释放了 lvReportConsole := nil; finally //释放dll TReportConsoleLibWrapper.checkFinalization; end; end;
仔细下来想想确实还是自己的问题。明明知道,还犯下了这样的错误,还我调了4个小时。头都晕了