Blame src/cppunit/Win32DynamicLibraryManager.cpp

Packit 8c9aa0
#include <cppunit/Portability.h>
Packit 8c9aa0
Packit 8c9aa0
#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER)
Packit 8c9aa0
#include <cppunit/plugin/DynamicLibraryManager.h>
Packit 8c9aa0
Packit 8c9aa0
#define WIN32_LEAN_AND_MEAN 
Packit 8c9aa0
#define NOGDI
Packit 8c9aa0
#define NOUSER
Packit 8c9aa0
#define NOKERNEL
Packit 8c9aa0
#define NOSOUND
Packit 8c9aa0
#define NOMINMAX
Packit 8c9aa0
#define BLENDFUNCTION void    // for mingw & gcc  
Packit 8c9aa0
#include <windows.h>
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
CPPUNIT_NS_BEGIN
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
DynamicLibraryManager::LibraryHandle 
Packit 8c9aa0
DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
Packit 8c9aa0
{
Packit 8c9aa0
  return ::LoadLibraryA( libraryName.c_str() );
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
void 
Packit 8c9aa0
DynamicLibraryManager::doReleaseLibrary()
Packit 8c9aa0
{
Packit 8c9aa0
  ::FreeLibrary( (HINSTANCE)m_libraryHandle );
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
DynamicLibraryManager::Symbol 
Packit 8c9aa0
DynamicLibraryManager::doFindSymbol( const std::string &symbol )
Packit 8c9aa0
{
Packit 8c9aa0
  return (DynamicLibraryManager::Symbol)::GetProcAddress( 
Packit 8c9aa0
     (HINSTANCE)m_libraryHandle, 
Packit 8c9aa0
     symbol.c_str() );
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
std::string 
Packit 8c9aa0
DynamicLibraryManager::getLastErrorDetail() const
Packit 8c9aa0
{
Packit 8c9aa0
  LPVOID lpMsgBuf;
Packit 8c9aa0
  ::FormatMessageA( 
Packit 8c9aa0
      FORMAT_MESSAGE_ALLOCATE_BUFFER | 
Packit 8c9aa0
      FORMAT_MESSAGE_FROM_SYSTEM | 
Packit 8c9aa0
      FORMAT_MESSAGE_IGNORE_INSERTS,
Packit 8c9aa0
      NULL,
Packit 8c9aa0
      GetLastError(),
Packit 8c9aa0
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
Packit 8c9aa0
      (LPSTR) &lpMsgBuf,
Packit 8c9aa0
      0,
Packit 8c9aa0
      NULL 
Packit 8c9aa0
  );
Packit 8c9aa0
Packit 8c9aa0
  std::string message = (LPCSTR)lpMsgBuf;
Packit 8c9aa0
Packit 8c9aa0
  // Display the string.
Packit 8c9aa0
//  ::MessageBoxA( NULL, (LPCSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
Packit 8c9aa0
Packit 8c9aa0
  // Free the buffer.
Packit 8c9aa0
  ::LocalFree( lpMsgBuf );
Packit 8c9aa0
Packit 8c9aa0
  return message;
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
CPPUNIT_NS_END
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
#endif // defined(CPPUNIT_HAVE_WIN32_DLL_LOADER)