home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / dld / test / foo / call_add1.cc < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  59 lines

  1.  
  2. extern "C"
  3. {
  4. #include "dld.h"
  5. }
  6.  
  7. #include <stdio.h>
  8.     
  9. int x;
  10.  
  11. void
  12. list_undefined (void)
  13. {
  14.   int i;
  15.   char **undefined_syms = dld_list_undefined_sym ();
  16.   for (i = 0; i < dld_undefined_sym_count; i++)
  17.     printf ("%s\n", undefined_syms[i]);
  18. }
  19.  
  20. /*
  21.  *  Dynamically link in "add1.o", which defines the function "add1".
  22.  *  Invoke "add1" to increment the global variable "x" defined *here*.
  23.  */
  24. int
  25. main (int argc, char **argv)
  26. {
  27.     register void (*func) ();
  28.  
  29.     /* required initialization. */
  30.     dld_init (argv[0]);
  31.  
  32.     x = 1;
  33.     printf ("global variable x = %d\n", x);
  34.  
  35.     dld_create_reference ("add1__Fv");
  36.  
  37.     list_undefined ();
  38.  
  39.     if (dld_link ("add1.a"))
  40.       dld_perror ("add1.a");
  41.  
  42.     list_undefined ();
  43.  
  44.     if (dld_link ("add2.a"))
  45.       dld_perror ("add2.a");
  46.  
  47.     list_undefined ();
  48.  
  49.     /* grap the entry point for function "add1" */
  50.     func = (void (*) ()) dld_get_func ("add1__Fv");
  51.  
  52.     /* invoke "add1" */
  53.     (*func) ();
  54.     printf ("global variable x = %d\n", x);
  55.     fflush (stdout);
  56.  
  57.     return 0;
  58. }
  59.