Looks like you're using C++
vector<string> getUsbList();
C++ applies so called "name mangling" to give each function symbol a unique name based on the types of its input and output parameters. This is done to support function overloading (multiple functions of the same name but with different parameter types).
You either have to load based on the mangled name or you have to disable name mangling (and hence the ability to overload the function).
Since there is no standard on how names are mangled and each compiler may implement it differently this is not a very robust method.
Disabling name mangling is done by surrounding the function declarations in the header with
extern "C" {
// ...
}