Hi Robert,

Thanks for being quick on the ball with these changes.  Hopefully
we'll be able to get things resolved pretty quick and things compiling
cleanly once again.

Heh, you know me :-)

I did add the OSG_EXPORT which I assumed would be sufficient - this
approach is used elsewhere in the OSG when declaring C functions.
What is the issue that you are seeing here?   The lack of direct
mapping between glu.h and our GLU header?

No. Look at for example src/osg/glu/libtess/tess.h. See all the GLAPIENTRY symbols there? There are two problems there:

1. GLAPIENTRY is not defined anywhere. Solution: either define it, or don't use it as a prefix anywhere.

2. Functions are prefixed with GLAPIENTRY in one header (tess.h) but not in another (include/osg/GLU). VC++ requires that all predeclarations of a same function match, as well as the definition. So you can't have a definition like this:

(in src/osg/glu/libutil/mipmap.cpp)

4587    GLint GLAPIENTRY
4588    gluBuild2DMipmaps(GLenum target, GLint internalFormat,
4589                            GLsizei width, GLsizei height,
4590                            GLenum format, GLenum type,
4591                            const void *data)

when you have a declaration like this:

(in include/osg/GLU)

24 extern OSG_EXPORT GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);

See there is no GLAPIENTRY in the second case, so they don't match. If you decide to remove GLAPIENTRY as a solution to the first problem above, then the second problem will be solved as well.

In include/osg/GL, there is this:

    #ifndef GL_APIENTRY
        #define GL_APIENTRY APIENTRY
    #endif // GL_APIENTRY

So I just added an equivalent:

    #ifndef GLAPIENTRY
        #define GLAPIENTRY APIENTRY
    #endif // GLAPIENTRY

which makes things compile. But as I said, another option would be to remove GLAPIENTRY everywhere...

My first priority is to get things
compiling across platforms without the namespace - one thing at a
time.

I totally agree.

Thanks for looking into the other things. I think it's the same thing as for other GL defines that you've put in OSG directly... The GL/gl.h included with Visual Studio doesn't have things defined in versions of OpenGL higher than 1.1, so for example GL_TABLE_TOO_LARGE was introduced in OpenGL 1.2 (see the bottom of http://www.opengl.org/sdk/docs/man/xhtml/glGetError.xml) so it's not there.

J-S
--
______________________________________________________
Jean-Sebastien Guay    [email protected]
                               http://www.cm-labs.com/
                        http://whitestar02.webhop.org/
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to