| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 GaudiDll() {}
24 public:
25 static void initialize(void* hinstDLL);
26 static void finalize(void* hinstDLL);
27 };
28 #endif
29
30 #if defined(_WIN32) && defined(_DLL)
31 namespace win {
32 // Avoid conflicts between Windows' headers and MSG.
33 #ifndef NOMSG
34 # define NOMSG
35 # ifndef NOGDI
36 # define NOGDI
37 # endif
38 #endif
39 #include <windows.h>
40 }
41
42 win::BOOL APIENTRY DllMain(
43 win::HINSTANCE hinstDLL, // handle to DLL module
44 win::DWORD fdwReason, // reason for calling function
45 win::LPVOID lpvReserved // reserved
46 )
47 {
48 System::setModuleHandle(hinstDLL);
49 switch( fdwReason ) {
50 case DLL_PROCESS_ATTACH: {
51 GaudiDll::initialize(hinstDLL);
52 }
53 break;
54 case DLL_THREAD_ATTACH:
55 break;
56 case DLL_THREAD_DETACH:
57 break;
58 case DLL_PROCESS_DETACH: {
59 GaudiDll::finalize(hinstDLL);
60 // Since the System class is shared now, we may no longer close the
61 // Process handle! M.F.
62 //win::CloseHandle(System::processHandle());
63 }
64 break;
65 }
66 return TRUE;
67
68 }
69 #elif __linux
70 static void _init() __attribute__((constructor));
71 static void _fini() __attribute__((destructor));
72
73 static void _init() {
74 GaudiDll::initialize(0);
75 }
76 static void _fini() {
77 GaudiDll::finalize(0);
78 }
79 #elif defined(__APPLE__)
80 static void _init() __attribute__((constructor));
81 static void _fini() __attribute__((destructor));
82
83 static void _init() {
84 //FIXME GaudiDll::initialize(0);
85 }
86 static void _fini() {
87 //FIXME GaudiDll::finalize(0);
88 }
89
90 #endif // WIN32
91
92 #endif // SYSTEM_DLLMAIN_ICPP