SDL
2.0
testloadso.c
Go to the documentation of this file.
1
/*
2
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
3
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
7
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely.
11
*/
12
13
/* Test program to test dynamic loading with the loadso subsystem.
14
*/
15
16
#include <stdio.h>
17
#include <stdlib.h>
18
#include <string.h>
19
20
#include "
SDL.h
"
21
22
typedef
int (*
fntype
) (
const
char
*);
23
24
int
25
main
(
int
argc,
char
*argv[])
26
{
27
int
retval
= 0;
28
int
hello = 0;
29
const
char
*libname =
NULL
;
30
const
char
*symname =
NULL
;
31
void
*lib =
NULL
;
32
fntype
fn =
NULL
;
33
34
if
(argc != 3) {
35
const
char
*app = argv[0];
36
SDL_Log
(
"USAGE: %s <library> <functionname>\n"
, app);
37
SDL_Log
(
" %s --hello <lib with puts()>\n"
, app);
38
return
1;
39
}
40
41
/* Initialize SDL */
42
if
(
SDL_Init
(0) < 0) {
43
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"Couldn't initialize SDL: %s\n"
,
SDL_GetError
());
44
return
2;
45
}
46
47
if
(strcmp(argv[1],
"--hello"
) == 0) {
48
hello = 1;
49
libname = argv[2];
50
symname =
"puts"
;
51
}
else
{
52
libname = argv[1];
53
symname = argv[2];
54
}
55
56
lib =
SDL_LoadObject
(libname);
57
if
(lib ==
NULL
) {
58
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"SDL_LoadObject('%s') failed: %s\n"
,
59
libname,
SDL_GetError
());
60
retval
= 3;
61
}
else
{
62
fn = (
fntype
)
SDL_LoadFunction
(lib, symname);
63
if
(fn ==
NULL
) {
64
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"SDL_LoadFunction('%s') failed: %s\n"
,
65
symname,
SDL_GetError
());
66
retval
= 4;
67
}
else
{
68
SDL_Log
(
"Found %s in %s at %p\n"
, symname, libname, fn);
69
if
(hello) {
70
SDL_Log
(
"Calling function...\n"
);
71
fflush(stdout);
72
fn(
" HELLO, WORLD!\n"
);
73
SDL_Log
(
"...apparently, we survived. :)\n"
);
74
SDL_Log
(
"Unloading library...\n"
);
75
fflush(stdout);
76
}
77
}
78
SDL_UnloadObject
(lib);
79
}
80
SDL_Quit
();
81
return
retval
;
82
}
SDL.h
SDL_GetError
#define SDL_GetError
Definition:
SDL_dynapi_overrides.h:113
NULL
#define NULL
Definition:
begin_code.h:167
SDL_UnloadObject
#define SDL_UnloadObject
Definition:
SDL_dynapi_overrides.h:234
SDL_LogError
#define SDL_LogError
Definition:
SDL_dynapi_overrides.h:36
SDL_LoadObject
#define SDL_LoadObject
Definition:
SDL_dynapi_overrides.h:232
retval
SDL_bool retval
Definition:
testgamecontroller.c:65
SDL_Log
#define SDL_Log
Definition:
SDL_dynapi_overrides.h:31
SDL_LOG_CATEGORY_APPLICATION
@ SDL_LOG_CATEGORY_APPLICATION
Definition:
SDL_log.h:66
SDL_Quit
#define SDL_Quit
Definition:
SDL_dynapi_overrides.h:58
main
int main(int argc, char *argv[])
Definition:
testloadso.c:25
SDL_LoadFunction
void * SDL_LoadFunction(void *handle, const char *name)
fntype
int(* fntype)(const char *)
Definition:
testloadso.c:22
SDL_Init
#define SDL_Init
Definition:
SDL_dynapi_overrides.h:54
test
testloadso.c
Generated by
1.8.18