IBundleActivator* BundleLoader::LoadActivator(BundleInfo& bundleInfo) { Poco::Mutex::ScopedLock lock(m_Mutex); std::string activator = bundleInfo.m_Bundle->GetActivatorClass(); if (activator == "") return new DefaultActivator(); Poco::Path libPath = this->GetLibraryPathFor(bundleInfo.m_Bundle); std::string strLibPath(libPath.toString()); BERRY_INFO(m_ConsoleLog) << "Loading activator library: " << strLibPath; try { /* retrieves only an empty string and its not required #ifdef BERRY_OS_FAMILY_WINDOWS char cDllPath[512]; GetDllDirectory(512, cDllPath); BERRY_INFO << "Dll Path: " << cDllPath << std::endl; #endif */ bundleInfo.m_ClassLoader->loadLibrary(strLibPath); return bundleInfo.m_ClassLoader->create(activator); } catch (Poco::LibraryLoadException exc) { BERRY_ERROR << "Could not create Plugin activator. Did you export the class \"" << activator << "\" ?\n" << " Exception displayText(): " << exc.displayText(); exc.rethrow(); } return 0; }
bool OGRGeomediaDriver::FindDriverLib() { // Default name and path of driver library const char* aszDefaultLibName[] = { "libmdbodbc.so", "libmdbodbc.so.0" /* for Ubuntu 8.04 support */ }; const int nLibNames = sizeof(aszDefaultLibName) / sizeof(aszDefaultLibName[0]); const char* libPath[] = { "/usr/lib", "/usr/local/lib" }; const int nLibPaths = sizeof(libPath) / sizeof(libPath[0]); CPLString strLibPath(""); const char* pszDrvCfg = CPLGetConfigOption("MDBDRIVER_PATH", NULL); if ( NULL != pszDrvCfg ) { // Directory or file path strLibPath = pszDrvCfg; VSIStatBuf sStatBuf = { 0 }; if ( VSIStat( pszDrvCfg, &sStatBuf ) == 0 && VSI_ISDIR( sStatBuf.st_mode ) ) { // Find default library in custom directory const char* pszDriverFile = CPLFormFilename( pszDrvCfg, aszDefaultLibName[0], NULL ); CPLAssert( 0 != pszDriverFile ); strLibPath = pszDriverFile; } if ( LibraryExists( strLibPath.c_str() ) ) { // Save custom driver path osDriverFile = strLibPath; return true; } } // Try to find library in default path for ( int i = 0; i < nLibPaths; i++ ) { for ( int j = 0; j < nLibNames; j++ ) { const char* pszDriverFile = CPLFormFilename( libPath[i], aszDefaultLibName[j], NULL ); CPLAssert( 0 != pszDriverFile ); if ( LibraryExists( pszDriverFile ) ) { // Save default driver path osDriverFile = pszDriverFile; return true; } } } CPLError(CE_Failure, CPLE_AppDefined, "Geomedia: MDB Tools driver not found!\n"); // Driver not found! return false; }