view test/testloadso.c @ 2281:6359f74f3170

Date: Wed, 14 Nov 2007 22:20:27 -0500 From: Calvin Vette Subject: Fix to compile SDL-1.2 SVN on OS X Leopard I found I needed to add a conditional check for Leopard to compile cleanly on 1.2-SVN (20071114): #include <AudioUnit/AudioUnit.h> #ifdef AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER #include <AudioUnit/AUNTComponent.h> #endif where there is now just: #include <AudioUnit/AudioUnit.h>
author Sam Lantinga <slouken@libsdl.org>
date Fri, 28 Dec 2007 18:16:42 +0000
parents 2c835d58faad
children 9de326b3099c
line wrap: on
line source


/* Test program to test dynamic loading with the loadso subsystem. 
*/

#include <stdio.h>
#include <stdlib.h>

#include "SDL.h"

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

int
main(int argc, char *argv[])
{
    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];
        fprintf(stderr, "USAGE: %s <library> <functionname>\n", app);
        fprintf(stderr, "       %s --hello <lib with puts()>\n", app);
        return 1;
    }

    /* Initialize SDL */
    if (SDL_Init(0) < 0) {
        fprintf(stderr, "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) {
        fprintf(stderr, "SDL_LoadObject('%s') failed: %s\n",
                libname, SDL_GetError());
        retval = 3;
    } else {
        fn = (fntype) SDL_LoadFunction(lib, symname);
        if (fn == NULL) {
            fprintf(stderr, "SDL_LoadFunction('%s') failed: %s\n",
                    symname, SDL_GetError());
            retval = 4;
        } else {
            printf("Found %s in %s at %p\n", symname, libname, fn);
            if (hello) {
                printf("Calling function...\n");
                fflush(stdout);
                fn("     HELLO, WORLD!\n");
                printf("...apparently, we survived.  :)\n");
                printf("Unloading library...\n");
                fflush(stdout);
            }
        }
        SDL_UnloadObject(lib);
    }
    SDL_Quit();
    return (0);
}