|
|
1.1 root 1: /*
2: * dynlink2.c
3: *
4: * Created 17 August 1987 by Kevin Ruddell, Microsoft Corp
5: *
6: * This example illustrates the use of run time dynamic linking.
7: * A call to the procedure PRINTDATA is made in the dynamic link library DYNLIB.
8: *
9: * NB - The DYNLIB.DLL file must be located in the LIBPATH specified in your
10: * config.sys. You can place your current directory at the beginning
11: * of the LIBPATH by saying libpath=.;c:\; etc.
12: */
13:
14: #include <stdio.h>
15: #include <doscalls.h>
16:
17: #define MODULE "DYNLIB" /* Name of dynamic link module */
18: #define PROCNAME "PRINTDATA" /* Name of routine in dynamic module */
19: #define FBSZ 32 /* size of failure buffer */
20:
21: main(argc, argv)
22: int argc;
23: char *argv[];
24: {
25: unsigned ModHdl; /* dynamic link module handle */
26: unsigned rc; /* return code */
27: char fbuf[FBSZ]; /* failure obj name buffer */
28: void (far pascal * DynamicProc)();
29:
30:
31: /* Load dynamic link module */
32:
33: if (rc = DOSLOADMODULE( fbuf, FBSZ, MODULE, &ModHdl))
34: {
35: printf("module %s not found, failing obj %s error: %d\n",
36: MODULE, fbuf, rc);
37: DOSEXIT(1,1); /* exit with error */
38: }
39:
40: /* Get the address of procedure PROCNAME in the dynamic link module */
41:
42: if (rc = DOSGETPROCADDR( ModHdl, PROCNAME,
43: (unsigned long far *) &DynamicProc))
44: {
45: printf("procedure %s not found, error: %d\n", PROCNAME, rc);
46: DOSEXIT(1,1); /* exit with error */
47: }
48:
49: while(1)
50: {
51: (*DynamicProc)(); /* display shared and non-shared data */
52: DOSSLEEP(100L); /* yield the processor */
53: }
54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.