/*
 * dynmodule.c
 *
 * This goes with dyndemo.c to form a demonstration of dynamic loading
 * of code. This file must be compiled as a DLL (or whatever it takes
 * to make it a candidate for dynamic loading).
 */

/* Signature: 503dd7c5 23-Jul-2005 */

#include <stdio.h>

extern int variable_in_base;
extern int function_in_base(int x);

int callme(int x)
{
/*
 * Note that on Windows this attempt to use a VARIABLE that is defined in
 * the base application will give nonsense results. It does not fail in
 * the sense that it does not report a linker error, but the location
 * referenced as "variable_in_base" will NOT be the one that I wanted.
 * Or rather expected! Thus to actieve the desired effect it seems
 * necessary to pass a reference to the variable to an initialisation
 * function here, and then store it...
 */
    printf("variable in base = %.8x @ %p\n",
        variable_in_base, &variable_in_base);
    printf("function in base = %p\n",
        function_in_base);
    return 3*function_in_base(x) + 1;
}

/* end of dynmodule.c */


