Orxonox  0.0.5 Codename: Arcturus
DynLib.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4  (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org/
6 
7 Copyright (c) 2000-2006 Torus Knot Software Ltd
8 Also see acknowledgements in Readme.html
9 
10 This program is free software; you can redistribute it and/or modify it under
11 the terms of the GNU Lesser General Public License as published by the Free Software
12 Foundation; either version 2 of the License, or (at your option) any later
13 version.
14 
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public License along with
20 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22 http://www.gnu.org/copyleft/lesser.txt.
23 
24 You may alternatively use this source under the terms of a specific version of
25 the OGRE Unrestricted License provided you have obtained such a license from
26 Torus Knot Software Ltd.
27 -----------------------------------------------------------------------------
28 */
29 
30 // 08/11/2009: Small adjustments for Orxonox by Fabian 'x3n' Landau
31 
38 #ifndef _Core_DynLib_H__
39 #define _Core_DynLib_H__
40 
41 #include "core/CorePrereqs.h"
42 
43 #include <string>
44 
45 #if defined(ORXONOX_PLATFORM_WINDOWS)
46 # define DYNLIB_HANDLE hInstance
47 # define DYNLIB_LOAD( a ) LoadLibraryEx( a, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH )
48 # define DYNLIB_GETSYM( a, b ) GetProcAddress( a, b )
49 # define DYNLIB_UNLOAD( a ) !FreeLibrary( a )
50 
51 struct HINSTANCE__;
52 typedef struct HINSTANCE__* hInstance;
53 
54 #elif defined(ORXONOX_PLATFORM_UNIX)
55 # define DYNLIB_HANDLE void*
56 # define DYNLIB_LOAD( a ) dlopen( a, RTLD_LAZY | RTLD_GLOBAL)
57 # define DYNLIB_GETSYM( a, b ) dlsym( a, b )
58 # define DYNLIB_UNLOAD( a ) dlclose( a )
59 #endif
60 
61 namespace orxonox
62 {
73  {
74  protected:
77  std::string dynlibError(void);
78  public:
83  DynLib( const std::string& name );
84 
87  ~DynLib();
88 
91  void load();
94  void unload();
96  const std::string& getName(void) const { return mName; }
97 
109  void* getSymbol( const std::string& strName ) const throw();
110 
111  protected:
112 
115  };
116 
117 }
118 
119 #endif /* _Core_DynLib_H__ */
#define DYNLIB_HANDLE
Definition: DynLib.h:55
Shared library macros, enums, constants and forward declarations for the core library ...
::std::string string
Definition: gtest-port.h:756
DYNLIB_HANDLE m_hInst
Handle to the loaded library.
Definition: DynLib.h:114
std::string mName
Definition: DynLib.h:75
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _CoreExport
Definition: CorePrereqs.h:61
Resource holding data about a dynamic library.
Definition: DynLib.h:72
const std::string & getName(void) const
Get the name of the library.
Definition: DynLib.h:96