开发者

c++ -- how to implement a framework that supports plugins

As we know, Eclipse is a good framework that supports plugins based application development. I am using c++ for coding and would like to learn how to build a framework that support the plugins development. One good example is the Notepad++ that supports plugins. Is there a good book or resourc开发者_StackOverflow社区e that I can refer to.

Thank you


This looks like a pretty good overview of how one could do it: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2015.pdf

Beware that this proposal is for a generic plugin framework for the C++ language. For your particular application, you may not need all the described features.


I think that it's kind of an over kill answer (it has good points). Maybe you should first read about interpreters: http://www.vincehuston.org/dp/interpreter.html

You then should decided the boundaries of your plugins and script language, maybe you should start reading about the spirit module in boost.


You can consider just loading shared objects (linux) dynamically, with predefined function hooks...

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int main(int argc, char **argv) {
    void *handle;
    double (*cosine)(double);
    char *error;
    handle = dlopen ("libm.so", RTLD_LAZY);
    if (!handle) {
        fprintf (stderr, "%s\n", dlerror());
        exit(1);
    }
    dlerror();    /* Clear any existing error */
    cosine = dlsym(handle, "cos");
    if ((error = dlerror()) != NULL)  {
        fprintf (stderr, "%s\n", error);
        exit(1);
    }
    printf ("%f\n", (*cosine)(2.0));
    dlclose(handle);
    return 0;
}

The above was stolen from dlopen(3) Linux page, but it illustrates an example, where libm.so can be the module, and cos, could be the function name that your hooking to. Obviously this is far from a complete module / plugin framework.... but its a start =)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜