From: Rene Rivera (grafik666_at_[hidden])
Date: 2002-03-03 00:33:37
On 2002-03-01 at 05:48 PM, williamkempf_at_[hidden] (bill_kempf) wrote:
>I've e-mailed Rene about my concerns here before, but I've finally
>gotten around to proving the problem is real and thought it better to
>post it to the list this time.
>The issue is that the staging concept, with the ability to rename
>files, simply doesn't work for DLLs on the Win32 platform. When
>import libraries are used (and this is the only DLL usage that
>Boost.Threads can support since actual dynamic linking would result
>in premature cleanup of thread local data) the import library does
>the dynamic loading of the DLL based on the name of the DLL at
>compile time. When you rename the DLL this means that the import
>library no longer can load the appropriate DLL.
>Rene suggested using a utility such as IMPLIB to recreate the import
>library when staging. This might work, but I'm not sure if it's the
>right solution. I don't know if IMPLIB will work with all C++ DLLs
>generated by other compilers, nor do I know about the universal
>presence of this, or a similar utility, for the various compilers.
>I'd suggest instead allowing <tag>s to be used in the build commands
>to modify the output name at compile/link time. This may be a more
>complicated solution to implement in the Jam rules, but it seems to
>be the more "proper" solution.
I agree with Bill on this, even though I know IMPLIB will work, it's not the
nicest solution. I don't think the changes to get the tags implemented
elsewhere are much, just very tricky. I've factored out the rename code that
was in the "stage" rule to help if we do this.
-- grafik - Don't Assume Anything
-- rrivera_at_[hidden] - grafik_at_[hidden]
-- 102708583_at_icq - Grafik666_at_AIM - Grafik_at_[hidden]
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk