Boost logo

Boost :

From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2007-05-15 10:03:20


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk