"Paulo Matos" <[EMAIL PROTECTED]> writes:

> Isn't this a normal
> problem: an interface with some libraries using the interface. The core
> creates and destroys the object of the libraries through the interface.

No, I don't believe this is a widely-used design pattern,
at least not with static linking.

> This seems a normal issue which turns out to be a nightmare
> to solve. :-/

Firstly, your nightmare is entirely of your own doing.

Secondly, it has trivial solutions. 
One I already mentioned: listing objects explicitly.

Here is another:
- rename your "registration" objects such that their names are
  unique, e.g. instead of "proxy p;" say

  proxy p_libbf; // in libbf.a
  proxy p_libot; // in libot.a
  // etc.


- into your main.o add this:

  #ifdef PULL_LIBBF
  extern proxy p_libbf;
  proxy &p_libbf_ref = p_libbf;
  #endif
  // etc.

- now you can control what is pulled into the static link:

  g++ -DPULL_LIBBF main.cc -c

- link just the way you do now, and the object(s) that you need
  from libbf.a will be pulled in into the main exe, because p_libbf
  is now on the "needed" list.

Cheers,
-- 
In order to understand recursion you must first understand recursion.
Remove /-nsp/ for email.
_______________________________________________
help-gplusplus mailing list
help-gplusplus@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to