目的:
为了共享资源,我现在想把Imagelist、TActionList等控件属性/内容设置好后,放在一个dll文件内,供其他Form动态加载。我的做法:
我按照如下方法,但是提示Access addreess memory 错误!请教问题原因,或其他解决方法。----------------------dll 工程文件
library DataDll;uses
  SysUtils,
  Classes,
  Controls,
  ActnList,
  //CommData内放置了一个设置好的Imagelist
  dmCommData in 'dmCommData.pas' {CommData: TDataModule};function GetImageList: TImageList; stdcall;
var
  dm: TCommData;
begin
  dm := TCommData.Create(nil);
  try
    Result := dm.ImageList;
  finally
    dm.Free;
  end;
end;exports
  GetImageList,
...---------------------外部程序的调用:
ImageList: TImageList;// 全局变量procedure GetObjects;
var
  H: THandle;
  GetImageList: TGetImageLIst;
  s: boolean;
begin
  H := LoadLibrary('DataDll.dll');
  if H > 31 then
  begin
    @GetImageList := GetProcAddress(H, 'GetImageList');
    if @GetImageList <> nil then ImageList := GetImageList;
  end;
  FreeLibrary(H);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  //ImageList := TImageList.Create(nil);  GetObjects;  ActionList.Images := ImageList; //到这步出错:访问内存地址错误  ...
end;