void*
не является указателем на функцию, поэтому вы не можете создать boost::function
из него. Вы, вероятно, хотите сначала преобразовать это в правильный указатель на функцию. Как это сделать зависит от реализации.
Вот как это уродливое преобразование рекомендуется в POSIX ( обоснование ):
void* ptr = /* get it from somewhere */;
Library* (*realFunctionPointer)(); // declare a function pointer variable
*(void **) (&realFunctionPointer) = ptr // hack a void* into that variable
Ваша платформа может требовать различных махинаций.
Если у вас есть такой указатель, вы можете просто сделать:
boost::function<Library*()> functionObj(realFunctionPtr);
Library* libInstance = functionObj();