Home | History | Annotate | Download | only in SDL
      1 /*
      2     SDL - Simple DirectMedia Layer
      3     Copyright (C) 1997-2012 Sam Lantinga
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Lesser General Public
      7     License as published by the Free Software Foundation; either
      8     version 2.1 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Lesser General Public License for more details.
     14 
     15     You should have received a copy of the GNU Lesser General Public
     16     License along with this library; if not, write to the Free Software
     17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     18 
     19     Sam Lantinga
     20     slouken (at) libsdl.org
     21 */
     22 
     23 /** @file SDL_loadso.h
     24  *  System dependent library loading routines
     25  */
     26 
     27 /** @file SDL_loadso.h
     28  *  Some things to keep in mind:
     29  *  - These functions only work on C function names.  Other languages may
     30  *    have name mangling and intrinsic language support that varies from
     31  *    compiler to compiler.
     32  *  - Make sure you declare your function pointers with the same calling
     33  *    convention as the actual library function.  Your code will crash
     34  *    mysteriously if you do not do this.
     35  *  - Avoid namespace collisions.  If you load a symbol from the library,
     36  *    it is not defined whether or not it goes into the global symbol
     37  *    namespace for the application.  If it does and it conflicts with
     38  *    symbols in your code or other shared libraries, you will not get
     39  *    the results you expect. :)
     40  */
     41 
     42 
     43 #ifndef _SDL_loadso_h
     44 #define _SDL_loadso_h
     45 
     46 #include "SDL_stdinc.h"
     47 #include "SDL_error.h"
     48 
     49 #include "begin_code.h"
     50 /* Set up for C function definitions, even when using C++ */
     51 #ifdef __cplusplus
     52 extern "C" {
     53 #endif
     54 
     55 /**
     56  * This function dynamically loads a shared object and returns a pointer
     57  * to the object handle (or NULL if there was an error).
     58  * The 'sofile' parameter is a system dependent name of the object file.
     59  */
     60 extern DECLSPEC void * SDLCALL SDL_LoadObject(const char *sofile);
     61 
     62 /**
     63  * Given an object handle, this function looks up the address of the
     64  * named function in the shared object and returns it.  This address
     65  * is no longer valid after calling SDL_UnloadObject().
     66  */
     67 extern DECLSPEC void * SDLCALL SDL_LoadFunction(void *handle, const char *name);
     68 
     69 /** Unload a shared object from memory */
     70 extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);
     71 
     72 /* Ends C function definitions when using C++ */
     73 #ifdef __cplusplus
     74 }
     75 #endif
     76 #include "close_code.h"
     77 
     78 #endif /* _SDL_loadso_h */
     79