{
#ifdef _WIN32
void* mh = ::LoadLibrary( name.length() == 0 ?
System::exeName().c_str() : name.c_str());
*handle = mh;
#else
const char*
path = name.c_str();
#if defined(linux) || defined(__APPLE__)
void *mh = ::dlopen(name.length() == 0 ? 0 :
path, RTLD_LAZY | RTLD_GLOBAL);
*handle = mh;
#elif __hpux
shl_t mh = ::shl_load(name.length() == 0 ? 0 :
path, BIND_IMMEDIATE | BIND_VERBOSE, 0);
HMODULE*
mod =
new HMODULE;
if ( 0 != mh ) {
if ( 0 != ::shl_gethandle_r(mh, &mod->dsc) ) {
}
else {
typedef void* (*___all)();
___all _alloc = (___all)malloc;
mod->numSym = ::shl_getsymbols(mod->dsc.handle, TYPE_PROCEDURE, EXPORT_SYMBOLS, malloc, &mod->sym);
}
}
#endif
#endif
if ( 0 == *handle ) {
}
return 1;
}