I have a simple ATL/COM DLL that wraps a C DLL. A VB client access this DLL. Whenever I exit the client, I can't compile anymore. In the form_load() vb function I create an object of the component and then I release it in the exit function. But the DLL doesn't get unloaded from memory. Why?

Here is the VB code.

option Explicit
private withevents mEvent as MsgGrabber

private Sub Form_Load()
set mEvent = new MsgGrabber
End Sub

private Sub Form_Unload(Cancel as Integer)
set mEvent = nothing
End Sub

private Sub mEvent_MessageRetrieved(byval vString as Variant)
Dim var as Variant
var = mEvent.GetMessage
MsgBox var
End Sub

private Sub Send_Click()
mEvent.SendMessage ("Client string")
End Sub