diff --git a/src/OSspecific/MSwindows/MSwindows.C b/src/OSspecific/MSwindows/MSwindows.C index 9ea78be680..3be89545c1 100644 --- a/src/OSspecific/MSwindows/MSwindows.C +++ b/src/OSspecific/MSwindows/MSwindows.C @@ -1197,11 +1197,23 @@ void* Foam::dlOpen(const fileName& libName, const bool check) void* handle = ::LoadLibrary(libso.c_str()); - if (!handle && !libso.startsWith("lib")) + if + ( + !handle + && libName.find('/') == std::string::npos + && !libso.startsWith("lib") + ) { // Try with 'lib' prefix libso = "lib" + libso; handle = ::LoadLibrary(libso.c_str()); + + if (MSwindows::debug) + { + std::cout + << "dlOpen(const fileName&)" + << " : dlopen of " << libso << std::endl; + } } if (handle) diff --git a/src/OSspecific/POSIX/POSIX.C b/src/OSspecific/POSIX/POSIX.C index 4b970b4a06..35568ced49 100644 --- a/src/OSspecific/POSIX/POSIX.C +++ b/src/OSspecific/POSIX/POSIX.C @@ -1670,11 +1670,22 @@ void* Foam::dlOpen(const fileName& libName, const bool check) { fileName libso; - if (!libName.startsWith("lib")) + if + ( + libName.find('/') == std::string::npos + && !libName.startsWith("lib") + ) { // Try with 'lib' prefix libso = "lib" + libName; handle = ::dlopen(libso.c_str(), ldflags); + + if (POSIX::debug) + { + std::cout + << "dlOpen(const fileName&)" + << " : dlopen of " << libso << std::endl; + } } else { @@ -1687,6 +1698,13 @@ void* Foam::dlOpen(const fileName& libName, const bool check) { libso = libso.lessExt().ext(EXT_SO); handle = ::dlopen(libso.c_str(), ldflags); + + if (POSIX::debug) + { + std::cout + << "dlOpen(const fileName&)" + << " : dlopen of " << libso << std::endl; + } } }