> You can't declare first foo.Foo in plugin_1.so, second foo.Foo in plugin_2.so and load both plugins at a same time. Is not it? May be I do not fully understand the mechanism of shared libraries.

Yes you can, it's the normal plugin use-case (see [DConf Talk](http://dconf.org/2013/talks/nowak.pdf)). This works because libraries aren't loaded into the global lookup scope (unless you specify RTLD_GLOBAL).
Recommended reading [Drepper's DSO How to](www.akkadia.org/drepper/dsohowto.pdf).