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