Hi Manu,

I have done some experiments with the static build side, and while its
not a full solution, I've checked in a few additions.  First up is
some additions to osgDB that add a proxy help class and a couple of
macros. The first macro replaces the old Proxy object usage in the
plugin, for the ive plugin it now looks like:

// now register with Registry to instantiate the above
// reader/writer.
REGISTER_OSGPLUGIN(ive, ReaderWriterIVE)

This both constructs the C++ proxy and provides the extern "C" void
osgdb_ive(void) function.

Then in the application you now add:

#include<...>

USE_OSGPLUGIN(ive)

main(...)
{
...
}

Note, the macro doesn't require you to add the function call to the
main.  This is thanks the USE_OSGPLUGIN use a local C++ proxy object
to call it for you automatically.

I also copied and pasted osgviewer app across to example and called it
osgstaticviewer, this example only builds during static build.  It
includes the extra plugin link line in the CMakeLists.txt as well as
the above USE_OSGPLUGIN(ive).  It'll need further expanding on in
future.

I have also add a C function into GraphicsWindowX11.cpp call void
graphicswindow_X11(void), and calling of this in osgstaticviewer's
main but while it does cause the GraphicsWindowX11.o to be linked and
even the proxies to register the WindowSystemInterfaceX11, the related
static pointer in src/osg/GraphicsContext.cpp resets itself to 0 for
some unknown reason, programatically its never reset to 0, it just
happens?#!.   I have now clue why it doesn't work.

Anyway, what I've checked in might inch us closer to a final easing of
making static apps.

Robert.
_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to