Hi Laurens, Many thanks for the examples and the modified readers. I don't have time to browse it right now but I will soon.
Well, USE_OSGPLUGIN() in Main.cpp causes linker to complain about duplicated symbols (inline methods in osgDB). I think this is because the compiler can silently refuse inlining and thus create the methods' code in each .cpp. I didn't find a way to work around this, except: - Making OSG static (which is what I don't want, for multiple reasons) - Directly including reader-writers code into my project (it works as expected) If you know a way, please tell ! It would be nice to tell CMake to directly include .o/.obj files from a project into another one at link-time, but I guess it's a bit tricky and non portable... Sukender PVLE - Lightweight cross-platform game engine - http://pvle.sourceforge.net/ ----- "Laurens Voerman" <[email protected]> a écrit : > Hi Sukkender, > if you are linking whith the .lib the USE_OSGPLUGIN() is required. - > Unless your project is set up to silently ignore the lib file and link > > the .obj files instead. (can't find the option atm.) > > What is the effect of the USE_OSGPLUGIN() in the Main.cpp? > > Attached is a reduced version of my project whith all the plugins, > where > our viewer has been replaced by the osgviewer. The cmake files > generate > dynamic link libs (osgdb_dds.dll) and always stuff the plugin into the > > final .exe too. > > modified dds reader and .mip helper reader are someware in > osg-submissions archive: see the thread "proposing dds mmToSkip > option" > starting on 3 dec 2009. Code is in the attachment.(possibly > updated) > > Laurens. > > > > > Sukender wrote: > > Forgot to mention: under MSVC, I've put /OPT:NOREF to avoid symbols > from being excluded when linking static libs. > > > > Sukender > > PVLE - Lightweight cross-platform game engine - > http://pvle.sourceforge.net/ > > > > ----- "Sukender" <[email protected]> a écrit : > > > >> Hi Laurens, hi all, > >> > >> Hum, could you give me a hint, please? If I write: > >> class BBB : public osgDB::ReaderWriter {... blah blah blah ...}; > >> REGISTER_OSGPLUGIN(bbb, BBB) > >> in "bbb.cpp" (in my main exe), then the "BBB" reader/writer is > >> constructed and added to the registry when process loads. > >> > >> However if I put that .cpp in a static lib, which is linked to my > main > >> exe, then the "BBB" reader/writer is never built (nor added to the > >> registry). > >> As far as I know, static libs are roughly a bunch of objects! > Were's > >> the difference? > >> > >> And of course, using USE_OSGPLUGIN() doesn't work. > >> > >> > >> BTW, The feature you're mentioning seems interesting. Is there any > >> chance you release the code, under a licence or another? > >> Cheers, > >> > >> Sukender > >> PVLE - Lightweight cross-platform game engine - > >> http://pvle.sourceforge.net/ > >> > >> ----- "Laurens Voerman" <[email protected]> a écrit : > >> > >>> Hi Sukender, > >>> > >>> my modified dds reader is able to skip reading high res mipmaps > from > >>> the > >>> dds file. > >>> For the version you are using, I am guessing that your link > errors > >>> might > >>> originate in compliling the static plugin lib with > >> OSG_LIBRARY_STATIC > >>> defined. And/Or linking the plugin with the osg libs. > >>> Mixing debug and release versions will also create confusing link > >>> errors. > >>> > >>> Of course the USE_OSGPLUGIN(ext1) must be mirrored by a > >>> REGISTER_OSGPLUGIN(ext1,myReaderWriterExtention1) > >>> > >>> Laurens. > >>> > >>> Sukender wrote: > >>>> Hi Laurens, > >>>> > >>>> This is what I mean. Glad to see it can work! But I have: > >>>> - A static lib > >>>> - No dllexport stuff > >>>> - Two USE_PLUGIN() in the main exe > >>>> > >>>> And I have linker errors. > >>>> Any idea? > >>>> > >>>> BTW, what your modified plugin does? I had problems with DDS > (saw > >>> some 3rd-party apps read RGB as BGR and vice-versa). > >>>> Cheers, > >>>> > >>>> Sukender > >>>> PVLE - Lightweight cross-platform game engine - > >>> http://pvle.sourceforge.net/ > >>>> ----- "Laurens Voerman" <[email protected]> a écrit : > >>>> > >>>>> Hi Sukender, > >>>>> I'm very confused about Robert's reply, because it's working > fine > >>> for > >>>>> me. I am using a modified dds reader linked into my app, which > >>> takes > >>>>> precedence over any osgdb_dds.dll because it registers on > >> startup. > >>>>> This > >>>>> can be done by simply adding the (modified) ReaderWriterDDS.cpp > >> to > >>> the > >>>>> project producing the executable, in this version there is no > >> need > >>> for > >>>>> USE_PLUGIN() - it will cause a link error. > >>>>> If you compile the plugin into a static link lib, you need the > >>>>> USE_PLUGIN() and link to the lib. > >>>>> > >>>>> This can work because the plugins I am using are not exporting > >> any > >>>>> symbols, so there is no __declspec(dllexport) stuff in the way. > >>>>> > >>>>> Laurens. > >>>>> > >>>>> Robert Osfield wrote: > >>>>>> Hi Sukender, > >>>>>> > >>>>>> On Tue, Apr 6, 2010 at 10:15 AM, Sukender <[email protected]> > >>> wrote: > >>>>>>> Hi all, > >>>>>>> > >>>>>>> I found several ressources(*) about static linking but didn't > >>> found > >>>>> an answer to my question: can I combine "dynamic OSG/OT" + > >> "dynamic > >>>>> OSG plugins" + "static custom (= user) plugins"? If yes, how? > >>>>>> I can't see how this would work as it seems to be there would > be > >> a > >>>>>> conflict between what version of core libraries that the > dynamic > >>> vs > >>>>>> static plugins would need to link to. > >>>>>> > >>>>>> If you want dynamic linking then use it everywhere. > >>>>>> > >>>>>> Robert. > >>>>>> _______________________________________________ > >>>>>> osg-users mailing list > >>>>>> [email protected] > >>>>>> > >> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >>>>> _______________________________________________ > >>>>> osg-users mailing list > >>>>> [email protected] > >>>>> > >> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >>>> _______________________________________________ > >>>> osg-users mailing list > >>>> [email protected] > >>>> > >> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >>> _______________________________________________ > >>> osg-users mailing list > >>> [email protected] > >>> > >> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >> _______________________________________________ > >> osg-users mailing list > >> [email protected] > >> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > _______________________________________________ > > osg-users mailing list > > [email protected] > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

