I repeat: I'm really not schizo, responding to my own emails! ;)
I cleaned up the example, and fixed the Makefile to work on both Linux and Win32. People can try it out if they want, to see a possible way(one of many good ones, I'm sure) that a plugin architecture for extensions might be implemented.
Hi folks, the newly created libgnomeoffice library has a plugin system that you might want to look at too. Just to remind the inkscape win32 and OSX guys, gnomeoffice includes applications like AbiWord, Gnumeric and gnome-db which are or will shortly be cross platform.
Cheers
Martin
Bob Jamison wrote:
I made a small code example of loading dynamic extensions to something like Inkscape. I put a Zip file of the code here:
http://troi.lincom-asg.com/~rjamison/inkscape/ext.zip
Basically this does plugin loading Netscape-style. It scans a directory for files beginning with a given prefix ("ix" in this case) and the proper suffix for a shared object (".so" on Unices, ".dll" on Win32).
It loads each object, finds a C function called CreateExtension. This is ---MUCH--- easier than linking to C++... Directly linking to a C++ resource on a shared object is fraught with DANGER!
It casts the resulting void * to an Extension object, which has virtual overloaded methods for any class extending it. It then calls a few methods on each one, just to show that it is honest.
The Makefile works on Linux. I'll make it work on Win32 later. It just needs to use the dlltool to make dll's instead of .so's. But it is Happy Hour right now, and I must keep my priorities straight!! ;-)
Hope this is helpful if considering methods of Inkscape extension.
Bob
This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel