Calling functions from an array of pointers in a library causes 'undefined reference to' error
void (*caller[2])();


should be:

void (*Lib::caller[2])();


Since you are defining storage space for a static member variable you have to tell the compiler what class it's a static member of.