Initialization
| Appendix G. Wrapping C Libraries with gmmproc |

## Initialization

Your library must be initialized before it can be used, to register the new types that it makes available. Also, the C library that you are wrapping might have its own initialization function that you should call. You can do this in an `init()` function that you can place in hand-coded `init.h` and `init.cc` files. This function should initialize your dependencies (such as the C function, and gtkmm) and call your generated `wrap_init()` function. For instance:

    void init()
    {
      Gtk::Main::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.
      wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.
    }

The implementation of the `wrap_init()` method in `wrap_init.cc` is generated by `generate_wrap_init.pl`, but the declaration in `wrap_init.h` is hand-coded, so you will need to adjust `wrap_init.h` so that the `wrap_init()` function appears in the correct C++ namespace.

Hand-coded source files |  | Problems in the C API.