The Gaudi Framework
v30r3 (a5ef0a68)
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
DllMain.icpp
Go to the documentation of this file.
1
//====================================================================
2
// DllMain.cpp
3
//--------------------------------------------------------------------
4
//
5
// Package : Gaudi/System
6
//
7
// Description: The DLL initialisation must be done seperately for
8
// each DLL.
9
//
10
// Author : M.Frank
11
// Created : 13/1/99
12
// Changes :
13
//
14
//====================================================================
15
#ifndef SYSTEM_DLLMAIN_ICPP
16
#define SYSTEM_DLLMAIN_ICPP 1
17
18
#include "
GaudiKernel/Kernel.h
"
19
#include "
GaudiKernel/System.h
"
20
21
#if !defined( __APPLE__ )
22
class
GaudiDll
23
{
24
GaudiDll
() {}
25
26
public
:
27
static
void
initialize
(
void
* hinstDLL );
28
static
void
finalize
(
void
* hinstDLL );
29
};
30
#endif
31
32
#if defined( _WIN32 ) && defined( _DLL )
33
namespace
win
34
{
35
// Avoid conflicts between Windows' headers and MSG.
36
#ifndef NOMSG
37
#define NOMSG
38
#ifndef NOGDI
39
#define NOGDI
40
#endif
41
#endif
42
#include <windows.h>
43
}
44
45
win::BOOL APIENTRY DllMain( win::HINSTANCE hinstDLL,
// handle to DLL module
46
win::DWORD fdwReason,
// reason for calling function
47
win::LPVOID lpvReserved
// reserved
48
)
49
{
50
System::setModuleHandle
( hinstDLL );
51
switch
( fdwReason ) {
52
case
DLL_PROCESS_ATTACH: {
53
GaudiDll::initialize
( hinstDLL );
54
}
break
;
55
case
DLL_THREAD_ATTACH:
56
break
;
57
case
DLL_THREAD_DETACH:
58
break
;
59
case
DLL_PROCESS_DETACH: {
60
GaudiDll::finalize
( hinstDLL );
61
// Since the System class is shared now, we may no longer close the
62
// Process handle! M.F.
63
// win::CloseHandle(System::processHandle());
64
}
break
;
65
}
66
return
TRUE
;
67
}
68
#elif __linux
69
static
void
_init()
__attribute__
( ( constructor ) );
70
static
void
_fini()
__attribute__
( ( destructor ) );
71
72
static
void
_init() {
GaudiDll::initialize
( 0 ); }
73
static
void
_fini() {
GaudiDll::finalize
( 0 ); }
74
#elif defined( __APPLE__ )
75
static
void
_init()
__attribute__
( ( constructor ) );
76
static
void
_fini()
__attribute__
( ( destructor ) );
77
78
static
void
_init()
79
{
80
// FIXME GaudiDll::initialize(0);
81
}
82
static
void
_fini()
83
{
84
// FIXME GaudiDll::finalize(0);
85
}
86
87
#endif // WIN32
88
89
#endif // SYSTEM_DLLMAIN_ICPP
System.h
__attribute__
#define __attribute__(x)
Definition:
System.cpp:89
Kernel.h
GaudiDll::initialize
static void initialize(void *hinstDLL)
Definition:
LoadFactoryEntries.h:19
System::setModuleHandle
GAUDI_API void setModuleHandle(ImageHandle handle)
Attach module handle.
Definition:
ModuleInfo.cpp:139
GaudiDll
Definition:
DllMain.icpp:22
GaudiKernel.Constants.TRUE
bool TRUE
Definition:
Constants.py:20
GaudiDll::finalize
static void finalize(void *hinstDLL)
Definition:
LoadFactoryEntries.h:20
GaudiDll::GaudiDll
GaudiDll()
Definition:
DllMain.icpp:24
GaudiKernel
GaudiKernel
DllMain.icpp
Generated on Wed Aug 1 2018 23:21:01 for The Gaudi Framework by
1.8.11