testloadso.c File Reference
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include "SDL.h"`
Include dependency graph for testloadso.c:

Go to the source code of this file.

## Typedefs

typedef int(* | fntype) (const char *)

## Functions

int | main (int argc, char *argv[])

## Typedef Documentation

## fntype

typedef int(* fntype) (const char *)

Definition at line 22 of file testloadso.c.

## Function Documentation

## main()

int main | ( | int | argc,
|  | char * | argv[]
| ) |  |

Definition at line 25 of file testloadso.c.

References NULL, retval, SDL_GetError, SDL_Init, SDL_LoadFunction(), SDL_LoadObject, SDL_Log, SDL_LOG_CATEGORY_APPLICATION, SDL_LogError, SDL_Quit, and SDL_UnloadObject.

{
int retval = 0;
int hello = 0;
const char *libname = NULL;
const char *symname = NULL;
void *lib = NULL;
fntype fn = NULL;
if (argc != 3) {
const char *app = argv[0];
SDL_Log("USAGE: %s <library> <functionname>\n", app);
SDL_Log(" %s --hello <lib with puts()>\n", app);
return 1;
}
/* Initialize SDL */
if (SDL_Init(0) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
return 2;
}
if (strcmp(argv[1], "--hello") == 0) {
hello = 1;
libname = argv[2];
symname = "puts";
} else {
libname = argv[1];
symname = argv[2];
}
lib = SDL_LoadObject(libname);
if (lib == NULL) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_LoadObject('%s') failed: %s\n",
libname, SDL_GetError());
retval = 3;
} else {
fn = (fntype) SDL_LoadFunction(lib, symname);
if (fn == NULL) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_LoadFunction('%s') failed: %s\n",
symname, SDL_GetError());
retval = 4;
} else {
SDL_Log("Found %s in %s at %p\n", symname, libname, fn);
if (hello) {
SDL_Log("Calling function...\n");
fflush(stdout);
fn(" HELLO, WORLD!\n");
SDL_Log("...apparently, we survived. :)\n");
SDL_Log("Unloading library...\n");
fflush(stdout);
}
}
SDL_UnloadObject(lib);
}
SDL_Quit();
return retval;
}
SDL_GetError
#define SDL_GetError
Definition: SDL_dynapi_overrides.h:113
SDL_LoadObject
#define SDL_LoadObject
Definition: SDL_dynapi_overrides.h:232
SDL_UnloadObject
#define SDL_UnloadObject
Definition: SDL_dynapi_overrides.h:234
SDL_LogError
#define SDL_LogError
Definition: SDL_dynapi_overrides.h:36
retval
SDL_bool retval
Definition: testgamecontroller.c:65
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:31
fntype
int(* fntype)(const char *)
Definition: testloadso.c:22
SDL_Quit
#define SDL_Quit
Definition: SDL_dynapi_overrides.h:58
NULL
#define NULL
Definition: begin_code.h:164
SDL_Init
#define SDL_Init
Definition: SDL_dynapi_overrides.h:54
SDL_LoadFunction
void * SDL_LoadFunction(void *handle, const char *name)
SDL_LOG_CATEGORY_APPLICATION
Definition: SDL_log.h:66