[Mono-list] Question about the lifetime of libraries loaded by a p/invoke

Paolo Molaro lupus at ximian.com
Tue Jul 22 09:45:44 EDT 2008

On 07/21/08 Maser, Dan wrote:
>   The simple question is this:  When a .dll or .so is loaded by the
> framework as the result of a p/invoke is that library guarenteed to stay
> loaded for the duration of the hosting process?  Or can the framework
> unload the dll if it wants to?  Is there anything in a spec that
> indicates a standard behavior?  I've been trying to get this from the
> microsoft documentation but I can't seem to find anything.

I don't think this is documented anywhere for the MS runtime,
if anyone has a definitive answer for that let me know.

For mono consider the following to be the documentation:
1) we currently don't unload the shared libraries once opened
2) this behaviour is not guaranteed and it could change in the future
3) if the library will get unloaded, that will happen at application
domain unload time (assuming it's not used in other appdomains).
4) it is guaranteed that invoking a non-existent method in an
existing shared library will cause the library to be kept open
(this is required to be able to work around the many cases where shared
libraries are not linked correctly with their dependencies)


lupus at debian.org                                     debian/rules
lupus at ximian.com                             Monkeys do it better

More information about the Mono-list mailing list