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)
|