As I have been doing something similar (an exported C api), this is an interesting approach. Presently I am doing it as a plugin itself, that exports a simplistic API. I'm still testing the feasibility of my ideas, but presently I have a test plugin AbiCapiTest, all the tools plugins that presently work on Windows (AbiPaint, AbiBabelfish, AbiURLDict, AbiWikipedia, with Festvox as-is also working though it does nothing), along with the graphics imp/exp that presently work on Windows (AbiBMP, AbiJPEG, AbiMagick) are supported. My next major step in my feasibility testing is to see if I can reasonably support the importers/exporters with relative coding ease on the importer/exporter side.
Notes about my approach: - Presently I'm only doing this on Windows, though with some minor changes (adding appropriate dllload/dllunload/getProcAddress) for other platforms then it may also work on them. - It involves some duplication, because I am trying to avoid changing AbiWord's source (which I did have to add a few ABI_EXPORTS to correct linking issues, but this is fixing proper linkage of existing plugins) and using any class in AbiWord's source causes an entry in the plugins import table for AbiWord.exe [a big no-no for what I'm trying for] (Some of this could be avoided by enabling ABI_EXPORT to be defined to nothing.) As such, a few really useful things, like UT_String and various other tidbits were extracted; this means only what is exposed through my plugin (or taken out and slightly modified) is available to other plugins that use my approach, though the supported API is easily expandable without breaking existing binary compatibility. - Plugins are no longer dependant on a given AbiWord build. As a method of testing this, all the above plugins in binary form [compiled only once] can be used with both AbiWord HEAD branch and AbiWord STABLE branch. - To ease my life, the plugins all link with their existing but modified code and another file abiCapiGeneric.cpp that handles AbiWord's plugin interface and handles testing the AbiCapi plugin's exported version along with getting the address of all C API functions. The plugin DLLs contain no imports for AbiCapi.1.dll nor AbiWord.exe. - Mixing of plugins compiled with MS VC 5 or 6 probably works (as that worked before), but I presently rely (by my lack of checking and ensuring) on using the same C/C++ runtime libary. - While they work for me, I don't claim them to be bug free, especially for non english languages, after all I'm still just seeing if my approach is usable [which I'm still undecided upon, hence my delay in mentioning it]. :-) Jeremy Davis [EMAIL PROTECTED] F J Franklin <[EMAIL PROTECTED]> wrote on 7/13/2002 10:57:24 AM: > >baby steps... > >o preliminary/experimental support for a Simple Plugin Interface (SPI): a > passive "C"-style interface with support for strict versioning and inter- > plugin dependencies; XAP_Spider is the module manager for SPI plugins. > .. >o experimental plugin for testing SPI (Simple Plugin Interface) currently > being developed > .. >Regards, Frank > >Francis James Franklin >[EMAIL PROTECTED] > >"No, she really likes me. She told me I look like Britney Spears, and why >would you say that to somebody you don't like?" > --- Elle Woods
