
On May 15, 2007, at 7:41 AM, Vladimir Prus wrote:
Douglas Gregor wrote:
I understand the reasoning---uniformity of behavior across platforms---but I believe this change was a mistake. My rationale follows.
When linking on Windows, if both a DLL and a static library are available, which one does the linker choose?
Such situation is impossible on Windows, as you cannot link to DLL directly, and you cannot have both static lib and import lib have the same name.
That said, I don't know what point you was trying to make, so I don't know if my clarification changes that point ;-)
I wasn't sure I had a point, but I think I do :) The point is that the change to keep main() out of shared libraries on *nix, which was motivated by uniformity with Windows, doesn't really make things uniform. It exacerbates the difference between the *nix model---where shared and static can coincide with the same name, and the linker prefers the shared one---and the Windows model---where shared and static must live in separate places, making the user explicitly choose which kind of linking to perform.
And finally, since this does not appear to be a Boost.Build issue whatsoever, I'm going to let you and Gennadiy sort it out.
Nope, not a Boost.Build issue at all. Sorry about the noise! - Doug