我想问一下,程序调用了DLL的窗口,当关闭了窗口,如何释放这个DLL啊,
我关闭了DLL的窗口,可是它仍然驻留在内存中
我如果要改这个DLL,必须要关掉这个程序先
如何可以在不关掉这个程序,就可以修改这个DLL
即关闭这个DLL窗口时,同时释放它
我关闭了DLL的窗口,可是它仍然驻留在内存中
我如果要改这个DLL,必须要关掉这个程序先
如何可以在不关掉这个程序,就可以修改这个DLL
即关闭这个DLL窗口时,同时释放它
解决方案 »
- Delphi调试,断点查看值时,出现[Evaluating...],然后死掉了
- 用free还是freeandnil??
- 如何获取指定页面的VIEWSTATE?
- 一个关于DBGrid的问题,想了N久,急!!!!!!!!谢谢各位高手了!!!!!!!!!!!!!!
- 如何象netants 那样可以接受拖过来的链接
- 关于给面子的话题
- 怎样做一个定时备份并自动删除的过期备份的程序,请高手指点!邮箱为[email protected]
- 这样有错吗?
- 我怎么样才能学好delphi?
- 请问如何得知一个汉字是那两个字节组成的
- Delphi 数据库系统开发的问题(数据库控件使用和MySQL相关)
- 困扰!Delphi工程目录中无故自动生成0字节文件!
hDll := LoadLibrary('DllName');
try
ShowDllWindow();
...
finally
if hDll > 0 then
FreeLibrary(hDll);
end;
1 静态调用,在pas文件中直接指定DLL和定义调用函数,在程序开始运行时,就会自动寻找该DLL,并载入内存。
A 即是无论你用不用,都要载入到内存中。
B 如果程序运行时,找不到要载入的DLL,就会报错,无法运行。
C 通常应用在于系统功能关联密切,必须而且经常使用的DLL。2 动态调用,在程序段中使用LoadLibrary('mydll.dll')加载。
A 在程序开始运行时,不会自动加载,只有在使用时,再通过LoadLibrary加载。
B 因此即使没有该DLL,程序的其他功能还可以使用。只是要用到该DLL,发现没有才会报错。
C 通常应用于对系统功能关联不密切,使用频率低的DLL。当然也有节省内存,优化性能的特点。
D Freelibrary与LoadLibrary要成对使用,是为了保证调用的内存空间有效释放。
例子:varHandle:Thandle;addc:Taddc;beginHandle:=LoadLibrary('Testdll.dll');//加载dll @addc:=GetProcAddress(Handle,'Test'); //取Test函数入口地址,大小写敏感。
if @addc<>nil then begin edit1.Text:=IntToStr(addc(10));//参数传递,这里直接用10 end; Freelibrary(Handle);//从内存释放dllend;
先关闭窗口,然后FreeLibary Dll