No, there is no way to get the type of some dlsym
-ed symbol, because an ELF shared object don't (always) carry any type information (except for C++, using name mangling).
And in principle, an ELF shared object might be produced without any C compiler, so the very notion of type of a given symbol might not exist, or the type be incompatible with C conventions.
However, you could restrict yourself to shared libraries with debug information. The DWARF format does carry type (and even source location) information about symbols. You might parse it with e.g. libdwarf or some other library.
You may consider alternative ways: for instance, you could have your own GCC plugin or MELT extension (MELT is a domain specific language to extend GCC) which would be used when compiling (with GCC) the shared libraries and would register the type information somewhere.