请问如何释放DLL文件(50分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用ISAPI做东东,一边调试一边做。可是DLL文件一旦被调用了以后,
我的程序就没有办法再继续调试了。所以我想问一下有什么办法可以
释放ISAPI生成的DLL文件吗?
 
如果你用PWS做服务器,把PWS关掉再启动一次
 
我问过一个一样的问题,得到的答案里面,我认为最方便的恐怕是
1.先用CGI调试,以后转成ISAPI;
2.每次编译DLL起不一样的名字,比如:
mydll_1.dll
mydll_2.dll
mydll_3.dll
...
 
呵呵, iis restart就可以了. 不过好象有一个注册表中的项可以把isapi动态载入,
用完在卸掉, 象cgi一样. 要好好找找. 调试完后再恢复, 否则很影响性能.
 
cytown: iis restart???
除非网站从来没人访问,否则人家在也不来你的站点了. :-)
 
呵呵, 你不知道isapi/cgi很容易把iis crash了么? 当然调试要在专门机器上运行了.
 
还是麻烦,不如编译成不同的名字.
 
to cytown:
>>不过好象有一个注册表中的项可以把isapi动态载入
找到了没,我也很想知道,正在为这事痛苦呢!
 
试试这样:

procedure TForm1.OkBtnClick(Sender: TObject);
var
hDLL : THandle;
aName : array[0..10] of char;
FoundDLL : Boolean;
begin
if EditDLLName.Text = ′′ then
begin
MessageDlg(′You must first enter the name of a DLL to
unload!′,mtInformation,[mbOk],0);
exit;
end;
StrPCopy(aName, EditDLLName.Text);
FoundDLL := false;
repeat
hDLL := GetModuleHandle(aName);
if hDLL = 0 then
break;
FoundDLL := true;
FreeLibrary(hDLL);
until false;
if FoundDLL then
MessageDlg(′Success!′,mtInformation,[mbOk],0)
else
MessageDlg(′DLL not found!′,mtInformation,[mbOk],0);
EditDLLName.Text := ′′;
end;




 
to amo: 你的方法我早用过了,就因为它不适用于ISAPI,所以我才在这儿提问的
 
呵呵, isapi不是普通的dll:-)
其实isapi完全可以先用cgi方法来调试, 没有问题改成isapi肯定没问题.
另外要注意的是, 一定要在nt下调试, 不能用pws因为nt机制和9x不同, 很多9x通过
的程序 nt下不行:-(
 
难道ISAPI的DLL真的就没有办法释放了吗?
 
我怎么编译连dll文件都生不成?提示:can not debug a project unless a host application is defined.

why???
 
sunlei: 你直接build就是了,不要run.
 
cakk,thank you,
but i still have a problem,
in brower,http://hostserver/mydll.dll/hello 为什么不显示?
 
应该显示什么?
 
use Intrabob(an isapi debugger, in <<D4 Unleashed>>)
 
摘自:MSDN --> TN063: Debugging Internet Extension DLLs

Cached DLLs

You can adjust the registry setting at
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC/Parameters/CacheExtensions
to have the server reinitialize DLLs each time they are used.
If this setting is 1, the server will keep DLLs loaded in memory as long as possible.
This is the default setting for the server, since it helps the server achieve peak performance,
and should only be changed if you are using the server for debugging. If you make the setting 0,
the server will always reload extension DLLs each time they are used.

 
后退
顶部