Boost logo

Boost :

From: Ulrich Eckhardt (doomster_at_[hidden])
Date: 2007-05-15 13:06:30


On Monday 14 May 2007 22:51:18 Piyo wrote:
> Assume that you have multiple developers developing plugins
> for a commercial package and that we recently deployed boost
> 1.34 to our facility. For some informed developers, they will
> switch over to 1.34 whereas others might not know and stick with
> 1.33.1 or even 1.32. Now imagine loading in all these plugins
> into the 3rd party app, wouldn't there be some sort of symbol
> problems especially with boost run-time libraries (take the
> regex library for example) ??

This is not specific to Boost at all. The point is that as soon as your
plugin's interface depends on the version of another library you can't
reliably use a different version thereof.

What does that mean in practice?

Example 1, working:

  //interface
  void function();
  //implementation
  void function() {
    // use Boost here
  }

Example 2, not working:
  //interface
  void function( boost::function0<void> fn);
  //implementation
  void function( boost::function0<void> fn) {
    // use Boost here
  }

The reason this doesn't work is that different Boost versions have different
implementations of boost::function.

As already said, this not only affects Boost, but also other libraries. For
example if you replace the native standard library with a newer version, or
with STLport, or if you then use the diagnostic version (special debug mode)
you each time get different implemetations for std::string. Also, of course,
the used compiler and possibly its settings make a difference.

Uli


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