
"Edward Diener" <eddielee@tropicsoft.com> writes:
I know it is late to suggest a change but I think that the default when one links to the dynamic RTL should be that a dynamic link library is created, not a static library.
My own experience is that creating a dynamic link library is the norm when linking to the dynamic RTL, creating a static library is the norm when linking to the static lib version of the RTL, and that following any other mixed setup seems to lead to problems at run-time, particularly when memory management is involved.
Now I know that auto-link specifies it is an #error if one tries to create a dynamic link library, using BOOST_DYN_LINK, when one is using the static version of the RTL. I am wondering why this is any less of a problem than if one attempts to create a static library using the DLL version of the RTL. Despite the fact that I don't like either mixture, I would welcome an explanation of why one is allowable, and safe, and the other is not.
The RTL is responsible for OS resource allocation, and when two copies are used together, as occurs when two DLLs are each using a static RTL, resources must be deallocated in the same RTL where they were allocated. There's no analagous problem when using a dynamic RTL with static libraries. Although static user libraries may allocate/deallocate resources of their own, linking two copies of the same static user library together always fails. -- Dave Abrahams Boost Consulting www.boost-consulting.com