|
Boost-Build : |
From: bill_kempf (williamkempf_at_[hidden])
Date: 2002-03-01 12:48:53
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.
Bill Kempf
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