FreeLibrary 出错

场景:

DLL调用正常,但在freelibrary出错!!!
问题同这个一样   http://topic.****.net/t/20051019/13/4336484.html
但此楼猪   没有说明如何解决的。
======================================
在程序中我动态调用DLL中的函数,DLL文件中包含一个form,引出的函数将建立一个form,执行都很正常,但在freelibrary时出错,提示如下:          
    Project       e:\delphi\test.exe       raised       too       many       consecutive       exceptions: 'access       violation       at       0x00000000:read       of       address       0x00000000 ',Process       stopped.   ……
======================================
有人说是   sharemem的问题,但我都加了怎么还是这样啊~~早上还好好的~真是郁闷啊

------解决方案--------------------
只要dll里用到了string类型 问题就太多了,你看看能不能替换成PChar
------解决方案--------------------
library LibraryName;

uses
ShareMem,......;

{$R *.res}

var
DllApplication: TApplication;
DllScreen: TScreen;
DllHintWindowClass: THintWindowClass; //前面两个要,这个你看着办

......

procedure DllUnloadProc(Reason: Integer); register;
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := DllApplication;
Screen := DllScreen;
HintWindowClass := DllHintWindowClass;
end;
end;

exports
......;

begin
DllApplication := Application;
DllScreen := Screen;
DllHintWindowClass := HintWindowClass;
DllProc := @DllUnloadProc;
end.

------------------------------
另外调用该DLL的Project的dpr中也要在第一个uses ShareMem
------解决方案--------------------
呵~~,还挺凶。

不清楚你的调用源码,也不清楚你的DLL源码,不好说。

但报内存访问错,一般地有如下原因:

访问已经释放了的对象或是动态数组元素;

建议你自己仔细查查。

BTW,对于给你帮助的人,就算没有帮到你,也不要用这种态度。做人要厚道。


------解决方案--------------------
ShareMem必须是DLL和项目的USE的第一单元,有个Borlandmm.dll要一起发布
------解决方案--------------------
用dll的时候, delphi要打补丁
------解决方案--------------------
hsmserver(撒哈拉之雨的悲伤) 正解,我就是这样做的