Apologies if this is a FAQ or otherwise known, but, the following test program fails to compile for me:

=============================


#include <osg/StateSet>

#include <GLUT/glut.h>

#include <osg/Drawable>

int main(int argc, char** argv)
{
  return 0;
}


=============================

I'm on Mac, change <GLUT/glut.h> to <GL/glut.h> or similar if required.

As it turns out, I don't even want GLUT support in the program I was trying to build but there's a genuine issue here - glut.h behaves very badly: at its end, it #undef-s APIENTRY.

So when <osg/Drawable> is included, <osg/GL> has already been included (and guarded against another include, by defining _osg_gl), but APIENTRY has been undefined so never gets expanded again - the end result is I end up with APIENTRY in the pre-processed source and obviously compilation fails.

This took me a while to figure out, so maybe it could be documented? But there is an actual (possible) fix - remove the multiple include guard from <osg/GL>. This should be fine because it's a very small file that only consists of pre-processor actions. gl.h would still only be pulled in once, but APIENTRY would get set regardless.

Regards,
James
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to