library Project2; uses SysUtils, Unit1 in 'Unit1.pas',//引用Unit1.pas Classes; {$R *.res}
procedure SetActiveLanguage(LanguageName:string);export; stdcall; begin //处理Unit1.pas里form1类中的按钮对象 form1.Button1.Caption:='按钮1'; end;
exports SetActiveLanguage; begin end. 编译时能通过,生成了Project2.dll和project1.exe文件。运行时出现Access Violation address 0028332E in moudle 'Project2.dll',Read address 00000324错误,请问这是为什么?改为动态调用dll出现同样的错误,为什么?用什么方法把Form1的成员对象(button1)传递给dll。
这个程序的目的是通过点击窗体上的按钮调用dll文件,通过dll的过程SetActiveLanguage将按钮的caption变为按钮1,但是当在dll过程SetActiveLanguage()里设置form1.Button1.Caption:='按钮1';时需要将form1.button传递给dll。由于已经uses Unit1 in 'Unit1.pas',//引用Unit1.pas ,所以本以为能够成功,没想到运行时出错,请高手帮忙解释这是为什么?怎么解决?谢谢!(注:编译能通过)