
Alexander Lamaison wrote:
I'm trying to write a little wrapper round Windows GetProcAddress (dlsym equivalent?) that takes a function name by string, loads it dynamically and returns it as a boost::function. I'm having trouble getting my code to accept the same type of signatures as boost::function.
E.g.:
template<typename Signature> boost::function<Signature> proc_address( hmodule hmod, const std::string& name) { return boost::function<Signature>(GetProcAddress(hmod, name.c_str()); }
Where GetProcAddress returns a int (*)() which you cast to the function signature you're expecting. The problem is that when I call:
boost::function<int (int)> func; func = proc_address<int (int)>(hmod, "GetKeyboardInfo");
The compiler (MSVC 2005) complains about a ) after the int:
error C2144: syntax error : 'int' should be preceded by ')' error C2563: mismatch in formal parameter list
IIRC MSVC has problem with the int() notation try the portabel function usage: boost::function<int,void> or something -- ___________________________________________ Joel Falcou - Assistant Professor PARALL Team - LRI - Universite Paris Sud XI Tel : (+33)1 69 15 66 35