One of my pet projects was to supply the basic rasterization functionality of OpenGL. To do it, I wrote this interface...I'm not going to supply the actual implementation library that I've written (for several reasons, one being I didn't write all of it, only about half, the other half is something called mesa, and another is that it is so huge, that nobody will be able to make heads or tails out of it).
The class takes a library name as a parameter, and searches for the generic name symbols in the library in the class constructor. The downside of this is that you must export your symbols with the exact same name as OpenGL, which isn't really a downside at all.
If you wanted to just use normal OpenGL, you'd do this:
In my implementation, I do this:
NTGLAPI *gpNTGLAPI = new NTGLAPI("OPENGL32.DLL");
NTGLAPI *gpNTGLAPI = new NTGLAPI("RUDYGL.DLL");
I uploaded the header and c++ files.