ENH: dlOpen: check error message string

This commit is contained in:
mattijs
2011-10-24 21:31:38 +01:00
parent 48212805c0
commit 1cc1ddcacf
4 changed files with 15 additions and 7 deletions

View File

@ -1161,7 +1161,7 @@ int Foam::system(const std::string& command)
}
void* Foam::dlOpen(const fileName& lib)
void* Foam::dlOpen(const fileName& lib, const bool check)
{
if (POSIX::debug)
{
@ -1170,6 +1170,13 @@ void* Foam::dlOpen(const fileName& lib)
}
void* handle = ::dlopen(lib.c_str(), RTLD_LAZY|RTLD_GLOBAL);
if (!handle && check)
{
WarningIn("dlOpen(const fileName&, const bool)")
<< "dlopen error : " << ::dlerror()
<< endl;
}
if (POSIX::debug)
{
std::cout

View File

@ -143,8 +143,8 @@ Foam::functionEntries::codeStream::getFunction
}
else
{
// Uncached opening of libPath
lib = dlOpen(libPath);
// Uncached opening of libPath. Do not complain if cannot be loaded
lib = dlOpen(libPath, false);
}
}
@ -226,7 +226,7 @@ Foam::functionEntries::codeStream::getFunction
else
{
// Uncached opening of libPath
lib = dlOpen(libPath);
lib = dlOpen(libPath, true);
}
}

View File

@ -78,7 +78,7 @@ bool Foam::dlLibraryTable::open
{
if (functionLibName.size())
{
void* functionLibPtr = dlOpen(functionLibName);
void* functionLibPtr = dlOpen(functionLibName, verbose);
if (debug)
{

View File

@ -197,8 +197,9 @@ bool ping(const string&, const label timeOut=10);
//- Execute the specified command
int system(const std::string& command);
//- open a shared library. Return handle to library
void* dlOpen(const fileName& lib);
//- open a shared library. Return handle to library. Print error message
// if library cannot be loaded (check = true)
void* dlOpen(const fileName& lib, const bool check = true);
//- Close a dlopened library using handle. Return true if successful
bool dlClose(void*);