[Rd] C++ debugging help needed

Dirk Eddelbuettel edd at debian.org
Wed Oct 2 17:52:22 CEST 2013

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

| 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

And at that point the linker appears to pick in search (link ?) order.


Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com

More information about the R-devel mailing list