On 2 October 2013 at 15:45, Martyn Plummer wrote: | In C++, everything goes in the global namespace unless the programmer | explicitly creates one. So when you dynamically load two dynamic shared | libraries with a "Shape" object they clash. | | The solution here is to put | | namespace rgl { | ... | } | | around your class definitions in the rglm package, and | | using rgl::Shape
Exactly. | at the top of any source file that refers to rgl Shape. Likewise, the | igraph package should declare shape in the "igraph" namespace. And as I wrote to Duncan off-list, igraph doesn't, even though it otherwise uses an igraph namespace: /** Shape.h */ #ifndef SHAPE_H #define SHAPE_H #include <string> #include "Color.h" #include "Ray.h" #include "Point.h" class Shape [....] So the clash is due to two packages simulatenously failing to make use of namespaces. And at that point the linker appears to pick in search (link ?) order. Dirk -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel