45 lines
899 B
C
45 lines
899 B
C
|
#include "wildio.h"
|
||
|
#include "mymath.h"
|
||
|
#include <dlfcn.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
double magic_number = 0.0;
|
||
|
|
||
|
int main(int argc, char** argv) {
|
||
|
|
||
|
void *libwildio;
|
||
|
int (*show_a_double_call)(double);
|
||
|
double (*checkargs_call)(int,char**);
|
||
|
|
||
|
void *libmymath;
|
||
|
double (*sqrt_call)(double), result;
|
||
|
|
||
|
dlerror();
|
||
|
|
||
|
if (libwildio=dlopen("libwildio.so.1",RTLD_LAZY))
|
||
|
{
|
||
|
checkargs_call = dlsym(libwildio,"checkargs");
|
||
|
show_a_double_call = dlsym(libwildio,"show_a_double");
|
||
|
|
||
|
/* magic_number will be set by checkargs */
|
||
|
magic_number = (*checkargs_call)(argc,argv);
|
||
|
|
||
|
if (libmymath=dlopen("libmymath.so.1",RTLD_LAZY)) {
|
||
|
sqrt_call = dlsym(libmymath,"sqrt");
|
||
|
magic_number = (*sqrt_call)(magic_number);
|
||
|
|
||
|
result = (*show_a_double_call)(magic_number);
|
||
|
|
||
|
dlclose(libmymath);
|
||
|
dlclose(libwildio);
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/* last exit */
|
||
|
exit(1);
|
||
|
|
||
|
}
|