Making DLL's with multiple threads that access the coprocessor
By Jeff Hitchcock (14-Jul-1991)
To: Anyone interested in making DLL's with multiple threads that access the coprocessor
From:
- Jeff Hitchcock
- Applied Signal Technology, Inc.
- 470 Spring Park Place, Suite 700
- Herndon, VA 22070
1. What follows is a summary of key points of my experience in splitting a large program (1.8 MB .EXE) that uses both multiple threads and the coprocessor into a smaller .EXE (appx. 100K) and 12 DLL's, not including the special C Run Time Library (CRTL) DLL. I will be happy to answer any questions that I can about this.
2. So we are all using the same terminology, the following applies throughout:
Term Meaning module A DLL or EXE file, composed of multiple sources. source A .C or .ASM file; part of a module. Can also mean .H and .DLG files, as part of a resource.
3. The following proved to be the essential points:
a. All modules must use a dynamically linked CRTL in order to use the coprocessor.
b. All links must use the /NOI flag, which preserves case sensitivity (required because the CRTL functions are in lower case).
c. All module definition files (.DEF) must have the EXPENTRY functions (the exported ones) defined in UPPERCASE, because (i) EXPENTRY (== pascal _loadds) converts the function name to all uppercase, and (ii) the link uses the /NOI flag so references to the function from other modules will be unresolved if the functions are not defined as all uppercase.
d. All calls to WinDlgBox must be preceeded with a call to DosLoadModule to load and get the handle of the DLL and followed by a call to DosFreeModule to free the DLL.
e. Other than (d) and eliminating references to previously global variables, we made NO changes to any of our code.
4. The following "picture" shows, essentially, the flow from source to finished .DLL and .LIB (import library):
┌───────┐ ┌───────┐ │ │ │ │ │ .C │ │ .H │ │ │ │ │ └───────┘ └───────┘ ║ ║ ║ ║ ╚════════╦════════╝ ║ ║ ╔═══════════╩═══════════╗ ║ ║ ║ cl -D_MT -D_DLL ... ║ ║ ║ ╚═══════════╦═══════════╝ ║ ║ ┌───────┐ ║ ┌┴──────┐│ ┌───────┐ ┌───────┐ ┌───────┐ ┌┴──────┐││ ┌───────┐ │ │ │ │ │ │ │ │││ │ │ │ .DLG │ │ .H │ │ .OBJ │ │ .OBJ │├┘ │ .DEF │═══╗ │ │ │ │ │ │ │ ├┘ │ │ ║ └───────┘ └───────┘ └───────┘ └───────┘ └───────┘ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╚════════╦════════╝ ╚═══════════╬═══════════╝ ║ ║ ║ ║ ║ ║ ║ ╔══════╩═════╗ ╔══════════════╩══════════════╗ ║ ║ ║ ║ ║ ║ ║ rc -r .rc ╠═════╗ ║ link /NOI /NOD /NOE ... ║ ║ ║ ║ ║ ║ ║ ║ ╚════════════╝ ║ ╚════════════╦════════════════╝ ║ ║ ║ ║ ║ ║ ║ ┌───────┐ ┌───────┐ ║ │ │ │ │ ║ │ .RES │ │ .DLL │ ║ │ │ │ │ ║ └───────┘ └───────┘ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╚════════╦═══════╝ ╚═════════╦═════════╝ ║ ║ ║ ║ ╔══════╩═══════╗ ╔════════╩═════════╗ ║ ║ ║ ║ ║ rc .res .dll ║ ║ implib .lib .def ║ ║ ║ ║ ║ ╚══════╦═══════╝ ╚════════╦═════════╝ ║ ║ ║ ║ ┌───────┐ ┌───────┐ │ │ │ │ │ .DLL │ │ .LIB │ │ │ │ │ └───────┘ └───────┘
5. Four files are included for your perusal:
(1) The makefile for use with PolyMake (by InterSolv).
(2) The ELV_CRTL.DEF file (essentially the same as cexample.def, included with Microsoft C 6.0).
(3) ELV_DISP.DEF, to show how a DLL is defined.
(4) ELV_DISP.RC, to show how resources within a DLL are defined.
- MAKEFILE
############################################################################### # # # ELVIRA MAKE FILE for use with PolyMake # # # # For the making of the Elvira .EXE and .DLL files. # # # # --------------------------------------------------------------------------- # # # # NOTE: A custom C Run Time Library is used by ELVIRA. To make it, the # # file '\c600\lib\crtlib.obj' must be available. # # # # 'mlib' refers to Microsoft's Linker, which is renamed to distinguish # # it from PolyLibrarian, which is called 'lib'. # # # # --------------------------------------------------------------------------- # # # # Command line syntax: # # # # >make [oldver=Va.b] [newver=Vc.d] [debug=no] [target] # # # # where a = old major version # # b = old minor version # # c = new major version # # d = new minor version # # # # and "version" refers to an Elvira version, not a source revision. # # # # debug=no disables Codeview during compile & link # # (Default is Codeview enabled) # # # # target is a makeable file (elvira3.exe or a .dll) # # # # --------------------------------------------------------------------------- # # # # Definitions of macros (alphabetically listed) # # # # ADEBUG Assembler debug flags # # AFLAGS Assembler flags # # ARCPATH Path for VCS archive files (*.??v) # # CDEFINES Universal defines used when compiling .C files # # CWD Current Working Directory (inherent) # # DEBUGON "YES" if Codeview is desired; otherwise "NO" # # DLL_SYSLIBS System libraries included in a .DLL link # # DLL_CFLAGS C compiler flags for .DLL source # # DLL_CDEBUG Additional C compiler flags for debugging .DLL # # DLL_CNODEBUG Additional C compiler flags for no bebugging .DLL # # DLL_LINKFLAGS Link flags for compiling a .EXE # # DLL_LINKDEBUG Link flags added when using Codeview with .DL # # ELV_DLLS List of all .DLL's used in ELVIRA # # ELV_EXES List of all .EXE's used in ELVIRA # # ELV_EXE_OBJS .EXE : .OBJ dependencies # # ELV_EXE_RSRCS .EXE resources and headers # # ELV_xxxx_OBJS .DLL : .OBJ dependencies for ELV_xxxx.DLL # # ELV_xxxx_RSCRS .DLL resources for ELV_xxxx.DLL # # ELV_RESS A list of all .RES files in Elvira # # EXE_SYSLIBS System libraries included in a .EXE link # # EXE_CFLAGS C compiler flags for .EXE source # # EXE_CDEBUG Additional C compiler flags for debugging .EXE # # EXE_CNODEBUG Additional C compiler flags for no bebugging .EXE # # EXE_LINKFLAGS Link flags for compiling a .EXE # # EXE_LINKDEBUG Link flags added when using Codeview with .EXE # # GETOPTS Options used by VCS get command # # INC_GROUP Functional groups to be compiled with real code # # RCDEFINES Universal defines used when compiling .RC files # # SOURCEPATH Paths to search for source code # # # ############################################################################### ############################################################################### # # # GENERAL MACROS AND DIRECTIVES # # # ############################################################################### # Do not delete intermediate files (e.g., created .OBJ's) .PRECIOUS # Paths to files ARCPATH = v:\elvira SOURCEPATH = $(CWD);$(ARCPATH) # .ASM related flags AFLAGS = ADEBUG = /Zi /Zd # .C (made into a .EXE) related flags EXE_CFLAGS = -c $(CDEFINES) -Alfw -FPi -D_MT -D_DLL -G2stw -Gt16 -Od -W3 EXE_CDEBUG = -Zi -Od EXE_CNODEBUG = -Od # .C (made into a .DLL) related flags DLL_CFLAGS = -c $(CDEFINES) -ALw -FPi -D_MT -D_DLL -G2s -Gt16 -Od -W3 DLL_CDEBUG = -Zi -Od DLL_CNODEBUG = -Od # GET (extract from version control) flags GETOPTS = -q # .EXE linker flags EXE_LINKFLAGS = /NOD /NOE /NOI /ALIGN:16 /SEGMENTS:200 EXE_LINKDEBUG = /CO # Libraries used in linking .EXE's EXE_SYSLIBS = elv_crtl os2 lm_dxi_o # .DLL linker flags DLL_LINKFLAGS = /NOD /NOE /NOI /ALIGN:16 /SEGMENTS:200 DLL_LINKDEBUG = /CO # Libraries used in linking .DLL's DLL_SYSLIBS = elv_crtl os2 # Utility DLL's used by ELVIRA .EXE's and .DLL's (except for the utility .DLL's) ELV_UTILDLLS = elv_util ELV_UTILDLLS += elv_file ############################################################################### # # # EXE'S AND FUNCTION # # # ############################################################################### ELV_EXES = elvira3.exe # The main executable ############################################################################### # # # EXE : OBJECT dependencies # # # # The following objects are statically linked to make ELVIRA3.EXE. All # # other objects are linked into dynamic link libraries. # # # ############################################################################### ELV_EXE_OBJS = elvira3.obj # Must be first for .EXE file to LINK properly ELV_EXE_OBJS += config.obj ELV_EXE_OBJS += process.obj ELV_EXE_SYSOBS = c:\c600\lib\crtexe.obj ############################################################################### # # # DLL'S AND FUNCTION # # # # ELV_UTIL and ELV_FILE are listed first since they are used by most other # # .DLL's. Keeping them first forces their recompiles first during a # # complete make. # # # ############################################################################### # ---------------------- # DYNAMIC LINK LIBRARIES # ---------------------- ELV_DLLS = elv_crtl.dll # C RTL for Elvira (Required to use 80x87) ELV_DLLS += elv_util.dll # ELV_DLLS += elv_file.dll # ELV_DLLS += elv_b100.dll # ELV_DLLS += elv_clct.dll # ELV_DLLS += elv_disp.dll # ELV_DLLS += elv_dmod.dll # ELV_DLLS += elv_fax.dll # ELV_DLLS += elv_lor.dll # ELV_DLLS += elv_mlti.dll # ELV_DLLS += elv_naa.dll # ELV_DLLS += elv_proc.dll # ELV_DLLS += elv_rcgn.dll # # ---------------- # IMPORT LIBRARIES # ---------------- ELV_IMPLIBS = elv_crtl.lib ELV_IMPLIBS += elv_util.lib ELV_IMPLIBS += elv_file.lib ELV_IMPLIBS += elv_b100.lib ELV_IMPLIBS += elv_clct.lib ELV_IMPLIBS += elv_disp.lib ELV_IMPLIBS += elv_dmod.lib ELV_IMPLIBS += elv_fax.lib ELV_IMPLIBS += elv_lor.lib ELV_IMPLIBS += elv_mlti.lib ELV_IMPLIBS += elv_naa.lib ELV_IMPLIBS += elv_proc.lib ELV_IMPLIBS += elv_rcgn.lib # ---------------------- # RESOURCE FILES # ---------------------- ELV_RESS = elv_util.res # ELV_RESS += elv_file.res # # ELV_RESS += elv_b100.res # No B100 resources ELV_RESS += elv_clct.res # ELV_RESS += elv_disp.res # ELV_RESS += elv_dmod.res # ELV_RESS += elv_fax.res # ELV_RESS += elv_lor.res # ELV_RESS += elv_mlti.res # ELV_RESS += elv_naa.res # ELV_RESS += elv_proc.res # ELV_RESS += elv_rcgn.res # ELV_RESS += elvira3.res # ############################################################################### # # # DLL : OBJECT dependencies # # # # The following objects are linked into dynamic link libraries. # # # ############################################################################### # ------------ # ELV_B100.DLL # ------------ ELV_B100_OBJS = b100elv3.obj ELV_B100_OBJS += b100os2.obj ELV_B100_OBJS += b100mdem.obj # ------------ # ELV_CLCT.DLL # ------------ ELV_CLCT_OBJS = datacoll.obj ELV_CLCT_OBJS += rxctl.obj ELV_CLCT_OBJS += scan.obj ELV_CLCT_OBJS += scanfunc.obj ELV_CLCT_OBJS += siggen.obj ELV_CLCT_OBJS += sim.obj # ------------ # ELV_DISP.DLL # ------------ ELV_DISP_OBJS = bitplot.obj ELV_DISP_OBJS += dataplot.obj ELV_DISP_OBJS += text.obj # ------------ # ELV_DMOD.DLL # ------------ ELV_DMOD_OBJS = anlgdmod.obj ELV_DMOD_OBJS += bpskdmod.obj ELV_DMOD_OBJS += fskdmod.obj ELV_DMOD_OBJS += modem.obj # ------------ # ELV_FAX.DLL # ------------ ELV_FAX_OBJS = decutil.obj ELV_FAX_OBJS += fax.obj # ------------ # ELV_FILE.DLL # ------------ ELV_FILE_OBJS = fileio.obj # ------------ # ELV_LOR.DLL # ------------ ELV_LOR_OBJS = bitproc.obj # ------------ # ELV_MLTI.DLL # ------------ ELV_MLTI_OBJS = classify.obj ELV_MLTI_OBJS += energy.obj ELV_MLTI_OBJS += fsk.obj ELV_MLTI_OBJS += searche.obj ELV_MLTI_OBJS += spltband.obj ELV_MLTI_OBJS += topid.obj ELV_MLTI_OBJS += vftid.obj # ------------ # ELV_NAA.DLL # ------------ ELV_NAA_OBJS = casdecod.obj ELV_NAA_OBJS += hdlc.obj ELV_NAA_OBJS += mar.obj ELV_NAA_OBJS += naa.obj ELV_NAA_OBJS += naaclass.obj ELV_NAA_OBJS += naadecod.obj ELV_NAA_OBJS += naaevent.obj ELV_NAA_OBJS += sif.obj # ------------ # ELV_PROC.DLL # ------------ ELV_PROC_OBJS = fft.obj ELV_PROC_OBJS += filter.obj ELV_PROC_OBJS += mathe.obj ELV_PROC_OBJS += resample.obj # ------------ # ELV_RCGN.DLL # ------------ ELV_RCGN_OBJS = baudline.obj ELV_RCGN_OBJS += carrier.obj ELV_RCGN_OBJS += recognz.obj # ------------ # ELV_UTIL.DLL # ------------ ELV_UTIL_OBJS = help11.obj ELV_UTIL_OBJS += print.obj ELV_UTIL_OBJS += status.obj ELV_UTIL_OBJS += util.obj # ------------ # ELV_CRTL.DLL # ------------ ELV_CRTL_OBJS = c:\c600\lib\crtlib.obj ############################################################################### # # # EXE : RESOURCE dependencies # # # # The following resources are linked into .EXE files. # # # ############################################################################### ELV_EXE_RSRCS = elvira3.rc ELV_EXE_RSRCS += elvira3$.h ELV_EXE_RSRCS += config$.h ELV_EXE_RSRCS += config$.dlg # ELV_EXE_RSRCS += elvira3.ico # ELV_EXE_RSRCS += crosshr.ptr ############################################################################### # # # DLL : RESOURCE dependencies # # # # The following resources are linked into dynamic link libraries. # # # ############################################################################### # ------------ # ELV_B100.DLL # ------------ ELV_B100_RSRCS = # ------------ # ELV_CLCT.DLL # ------------ ELV_CLCT_RSRCS = elv_clct.rc ELV_CLCT_RSRCS += version.h ELV_CLCT_RSRCS += datacol$.dlg ELV_CLCT_RSRCS += datacol$.h ELV_CLCT_RSRCS += rxctl$.dlg ELV_CLCT_RSRCS += rxctl$.h ELV_CLCT_RSRCS += scan$.dlg ELV_CLCT_RSRCS += scan$.h ELV_CLCT_RSRCS += siggen$.dlg ELV_CLCT_RSRCS += siggen$.h ELV_CLCT_RSRCS += sim$.dlg ELV_CLCT_RSRCS += sim$.h # ------------ # ELV_DISP.DLL # ------------ ELV_DISP_RSRCS = elv_disp.rc ELV_DISP_RSRCS += dataplo$.dlg ELV_DISP_RSRCS += dataplo$.h # ------------ # ELV_DMOD.DLL # ------------ ELV_DMOD_RSRCS = elv_dmod.rc ELV_DMOD_RSRCS += anlgdmo$.dlg ELV_DMOD_RSRCS += anlgdmo$.h ELV_DMOD_RSRCS += bpskdmo$.dlg ELV_DMOD_RSRCS += bpskdmo$.h ELV_DMOD_RSRCS += fskdmod$.dlg ELV_DMOD_RSRCS += fskdmod$.h ELV_DMOD_RSRCS += modem$.dlg ELV_DMOD_RSRCS += modem$.h # ------------ # ELV_FAX.DLL # ------------ ELV_FAX_RSRCS = elv_fax.rc ELV_FAX_RSRCS += fax$.dlg ELV_FAX_RSRCS += fax$.h # ------------ # ELV_FILE.DLL # ------------ ELV_FILE_RSRCS = elv_file.rc ELV_FILE_RSRCS += fileio$.dlg ELV_FILE_RSRCS += fileio$.h # ------------ # ELV_LOR.DLL # ------------ ELV_LOR_RSRCS = elv_lor.rc ELV_LOR_RSRCS += bitproc$.dlg ELV_LOR_RSRCS += bitproc$.h # ------------ # ELV_MLTI.DLL # ------------ ELV_MLTI_RSRCS = elv_mlti.rc ELV_MLTI_RSRCS += classif$.dlg ELV_MLTI_RSRCS += classif$.h ELV_MLTI_RSRCS += energy$.dlg ELV_MLTI_RSRCS += energy$.h ELV_MLTI_RSRCS += fsk$.dlg ELV_MLTI_RSRCS += fsk$.h ELV_MLTI_RSRCS += searche$.dlg ELV_MLTI_RSRCS += searche$.h ELV_MLTI_RSRCS += spltban$.dlg ELV_MLTI_RSRCS += spltban$.h ELV_MLTI_RSRCS += topid$.dlg ELV_MLTI_RSRCS += topid$.h ELV_MLTI_RSRCS += vftid$.dlg ELV_MLTI_RSRCS += vftid$.h # ------------ # ELV_NAA.DLL # ------------ ELV_NAA_RSRCS = elv_naa.rc ELV_NAA_RSRCS += casdeco$.dlg ELV_NAA_RSRCS += casdeco$.h ELV_NAA_RSRCS += hdlc$.dlg ELV_NAA_RSRCS += hdlc$.h ELV_NAA_RSRCS += sif$.dlg ELV_NAA_RSRCS += sif$.h ELV_NAA_RSRCS += naa$.dlg ELV_NAA_RSRCS += naa$.h ELV_NAA_RSRCS += naaeven$.dlg ELV_NAA_RSRCS += naaeven$.h ELV_NAA_RSRCS += mar$.dlg ELV_NAA_RSRCS += mar$.h # ------------ # ELV_PROC.DLL # ------------ ELV_PROC_RSRCS = elv_proc.rc ELV_PROC_RSRCS += fft$.dlg ELV_PROC_RSRCS += fft$.h ELV_PROC_RSRCS += filter$.dlg ELV_PROC_RSRCS += filter$.h ELV_PROC_RSRCS += mathe$.dlg ELV_PROC_RSRCS += mathe$.h ELV_PROC_RSRCS += resampl$.dlg ELV_PROC_RSRCS += resampl$.h # ------------ # ELV_RCGN.DLL # ------------ ELV_RCGN_RSRCS = elv_rcgn.rc ELV_RCGN_RSRCS += baudlin$.dlg ELV_RCGN_RSRCS += baudlin$.h ELV_RCGN_RSRCS += carrier$.dlg ELV_RCGN_RSRCS += carrier$.h ELV_RCGN_RSRCS += recognz$.dlg ELV_RCGN_RSRCS += recognz$.h # ------------ # ELV_UTIL.DLL # ------------ ELV_UTIL_RSRCS = elv_util.rc ELV_UTIL_RSRCS += print$.dlg ELV_UTIL_RSRCS += print$.h ############################################################################### # # # ADJUST FLAGS DEPENDING UPON COMMAND LINE MACRO DEFINITIONS # # # ############################################################################### # If debugging is enabled (the default), add Codeview to compiles and links DEBUGON = $[u,$(debug)] %if "$(DEBUGON)" == "NO" %echo ** CODEVIEW DISABLED EXE_CFLAGS += $(CNODEBUG) DLL_CFLAGS += $(CNODEBUG) %else %echo ** CODEVIEW ENABLED AFLAGS += $(ADEBUG) EXE_CFLAGS += $(EXE_CDEBUG) DLL_CFLAGS += $(DLL_CDEBUG) EXE_LINKFLAGS += $(EXE_LINKDEBUG) DLL_LINKFLAGS += $(DLL_LINKDEBUG) %endif ############################################################################### # # # DEFINE THE "VERSION" TO BE SHOWN IN "ABOUT" DIALOG BOX # # # ############################################################################### %if %defined(oldver) CDEFINES = /DVERSION=$(oldver) %endif %if %defined(newver) CDEFINES = /DVERSION=$(newver) %endif ############################################################################### # # # DEFINE GROUP OF MODULES TO BE MADE # # # ############################################################################### %if %defined(group) INC_GROUP = $[u,$(group)] CDEFINES += /D$(INC_GROUP) RCDEFINES += -d $(INC_GROUP) %else CDEFINES += /DINC_ALL RCDEFINES += -d INC_ALL %endif ############################################################################### # # # LOGFILE EXTRACTION RULES # # # ############################################################################### .LOGFILE .asv(.asm -R$(oldver)) .LOGFILE .c_v(.c -R$(oldver)) .LOGFILE .dev(.def -R$(oldver)) .LOGFILE .dlv(.dlg -R$(oldver)) .LOGFILE .exv(.ext -R$(oldver)) .LOGFILE .glv(.glb -R$(oldver)) .LOGFILE .h_v(.h -R$(oldver)) .LOGFILE .rcv(.rc -R$(oldver)) ############################################################################### # # # LOGFILES ARE IN THE "ARCPATH" DIRECTORY ONLY # # # ############################################################################### .PATH.asv = $(ARCPATH) .PATH.c_v = $(ARCPATH) .PATH.dev = $(ARCPATH) .PATH.dlv = $(ARCPATH) .PATH.exv = $(ARCPATH) .PATH.glv = $(ARCPATH) .PATH.h_v = $(ARCPATH) .PATH.rcv = $(ARCPATH) ############################################################################### # # # SOURCE FILES ARE IN ONE OF THE "SOURCEPATH" DIRECTORIES # # # ############################################################################### .PATH.asm = $(SOURCEPATH) .PATH.c = $(SOURCEPATH) .PATH.def = $(SOURCEPATH) .PATH.dlg = $(SOURCEPATH) .PATH.ext = $(SOURCEPATH) .PATH.glb = $(SOURCEPATH) .PATH.h = $(SOURCEPATH) .PATH.ico = $(SOURCEPATH) .PATH.obj = $(SOURCEPATH) .PATH.rc = $(SOURCEPATH) .PATH.ptr = $(SOURCEPATH) ############################################################################### # # # ALL .LIB, .RES, AND .DLL FILES MUST BE IN THE $(CWD) # # # ############################################################################### .PATH.dll = $(CWD) .PATH.lib = $(CWD) .PATH.res = $(CWD) # Library files must have .LIB extension (All .DLL's have Import .LIB's) .LIBRARY .lib ############################################################################### # # # EPILOG # # # # If a new version was specified, update the log files. # # # ############################################################################### %if %defined(newver) .EPILOG: vcs -V"$(newver)": *.??v %endif ############################################################################### # # # LOG FILE EXTRACTION RULES # # # # $@ Target file # # $* Target file, less extension # # $< Depends on file # # $? All depends on files modified more recently than target # # $** All depends on files regardless of modification # # # ############################################################################### .c_v.c: get -q $(oldver) $<($@) .h_v.h: get -q $(oldver) $<($@) .asv.asm: get -q $(oldver) $<($@) .rcv.rc: get -q $(oldver) $<($@) .dlv.dlg: get -q $(oldver) $<($@) .exv.ext: get -q $(oldver) $<($@) .glv.glb: get -q $(oldver) $<($@) .dev.def: get -q $(oldver) $<($@) ############################################################################### # # # GENERAL COMPILATION RULES # # # ############################################################################### .asm.obj: masm $(AFLAGS) $< ; .c.obj: cl $(CFLAGS) $< .rc.res: rc -r $(RCDEFINES) $< .res.dll: rc $< .res.exe: rc $< ############################################################################### ############################################################################### ## ## ## DEPENDENCIES ## ## ## ## ** MAKE PROCESSING BEGINS HERE ** ## ## ## ## Sequence is to build all .DLL's, then the .EXE. ## ## ## ############################################################################### ############################################################################### # ------------------ # HEAD PSEUDO TARGET # ------------------ head : $(ELV_RESS) $(ELV_DLLS) $(ELV_EXES) # ---------------------------------------------- # FILES THAT MUST EXIST BUT HAVE NO MAKE PROCESS # ---------------------------------------------- elvira3.def : #elvira3.ico : #elvira3.ptr : ############################################################################### # # # ELVIRA3.EXE AND ELVIRA3.RES # # # ############################################################################### elvira3.res : $(ELV_EXE_RSRCS) rc -r $(RCDEFINES) elvira3 elvira3.exe :: elvira3.def $(ELV_EXE_OBJS) link $(EXE_LINKFLAGS) $(ELV_EXE_OBJS) $(ELV_EXE_SYSOBS), elvira3, NUL, $(EXE_SYSLIBS) $(ELV_IMPLIBS), elvira3 ; rc $[f, $[d, $<], $[r, $<], .RES] elvira3.exe :: elvira3.res rc $< ############################################################################### # # # .DLL'S AND ASSOCIATED RESOURCES # # # ############################################################################### # ------------ # ELV_B100.DLL # ------------ elv_b100_head : elv_b100.res elv_b100.dll elv_b100.def : elv_b100.dll :: elv_b100.def $(ELV_B100_OBJS) link $(DLL_LINKFLAGS) $(ELV_B100_OBJS), elv_b100, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_b100 implib elv_b100.lib elv_b100.def # ------------ # ELV_CLCT.DLL # ------------ elv_clct_head : elv_clct.res elv_clct.dll elv_clct.def : elv_clct.res : $(ELV_CLCT_RSRCS) rc -r $(RCDEFINES) elv_clct.rc elv_clct.dll :: elv_clct.def $(ELV_CLCT_OBJS) link $(DLL_LINKFLAGS) $(ELV_CLCT_OBJS), elv_clct, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS) elv_b100, elv_clct implib elv_clct.lib elv_clct.def rc $*.res $*.dll elv_clct.dll :: elv_clct.res rc $*.res $*.dll # ------------ # ELV_DISP.DLL # ------------ elv_disp_head : elv_disp.res elv_disp.dll elv_disp.def : elv_disp.res : $(ELV_DISP_RSRCS) rc -r $(RCDEFINES) elv_disp.rc elv_disp.dll :: elv_disp.def $(ELV_DISP_OBJS) link $(DLL_LINKFLAGS) $(ELV_DISP_OBJS), elv_disp, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_disp implib elv_disp.lib elv_disp.def rc $*.res $*.dll elv_disp.dll :: elv_disp.res rc $*.res $*.dll # ------------ # ELV_DMOD.DLL # ------------ elv_dmod_head : elv_dmod.res elv_dmod.dll elv_dmod.def : elv_dmod.res : $(ELV_DMOD_RSRCS) rc -r $(RCDEFINES) elv_dmod.rc elv_dmod.dll :: elv_dmod.def $(ELV_DMOD_OBJS) link $(DLL_LINKFLAGS) $(ELV_DMOD_OBJS), elv_dmod, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS) ELV_B100, elv_dmod implib elv_dmod.lib elv_dmod.def rc $*.res $*.dll elv_dmod.dll :: elv_dmod.res rc $*.res $*.dll # ------------ # ELV_FAX.DLL # ------------ elv_fax_head : elv_fax.res elv_fax.dll elv_fax.def : elv_fax.res : $(ELV_FAX_RSRCS) rc -r $(RCDEFINES) elv_fax.rc elv_fax.dll :: elv_fax.def $(ELV_FAX_OBJS) link $(DLL_LINKFLAGS) $(ELV_FAX_OBJS), elv_fax, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS) lm_dxi_o, elv_fax implib elv_fax.lib elv_fax.def rc $*.res $*.dll elv_fax.dll :: elv_fax.res rc $*.res $*.dll # ------------ # ELV_FILE.DLL # ------------ elv_file_head : elv_file.res elv_file.dll elv_file.def : elv_file.res : $(ELV_FILE_RSRCS) rc -r $(RCDEFINES) elv_file.rc elv_file.dll :: elv_file.def $(ELV_FILE_OBJS) link $(DLL_LINKFLAGS) $(ELV_FILE_OBJS), elv_file, NUL, $(DLL_SYSLIBS) elv_util, elv_file implib elv_file.lib elv_file.def rc $*.res $*.dll elv_file.dll :: elv_file.res rc $*.res $*.dll # ------------ # ELV_LOR.DLL # ------------ elv_lor_head : elv_lor.res elv_lor.dll elv_lor.def : elv_lor.res : $(ELV_LOR_RSRCS) rc -r $(RCDEFINES) elv_lor.rc elv_lor.dll :: elv_lor.def $(ELV_LOR_OBJS) link $(DLL_LINKFLAGS) $(ELV_LOR_OBJS), elv_lor, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_lor implib elv_lor.lib elv_lor.def rc $*.res $*.dll elv_lor.dll :: elv_lor.res rc $*.res $*.dll # ------------ # ELV_MLTI.DLL # ------------ elv_mlti_head : elv_mlti.res elv_mlti.dll elv_mlti.def : elv_mlti.res : $(ELV_MLTI_RSRCS) rc -r $(RCDEFINES) elv_mlti.rc elv_mlti.dll :: elv_mlti.def $(ELV_MLTI_OBJS) link $(DLL_LINKFLAGS) $(ELV_MLTI_OBJS), elv_mlti, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_mlti implib elv_mlti.lib elv_mlti.def rc $*.res $*.dll elv_mlti.dll :: elv_mlti.res rc $*.res $*.dll # ------------ # ELV_NAA.DLL # ------------ elv_naa_head : elv_naa.res elv_naa.dll elv_naa.def : elv_naa.res : $(ELV_NAA_RSRCS) rc -r $(RCDEFINES) elv_naa.rc elv_naa.dll :: elv_naa.def $(ELV_NAA_OBJS) link $(DLL_LINKFLAGS) $(ELV_NAA_OBJS), elv_naa, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_naa implib elv_naa.lib elv_naa.def rc $*.res $*.dll elv_naa.dll :: elv_naa.res rc $*.res $*.dll # ------------ # ELV_PROC.DLL # ------------ elv_proc_head : elv_proc.res elv_proc.dll elv_proc.def : elv_proc.res : $(ELV_PROC_RSRCS) rc -r $(RCDEFINES) elv_proc.rc elv_proc.dll :: elv_proc.def $(ELV_PROC_OBJS) link $(DLL_LINKFLAGS) $(ELV_PROC_OBJS), elv_proc, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_proc implib elv_proc.lib elv_proc.def rc $*.res $*.dll elv_proc.dll :: elv_proc.res rc $*.res $*.dll # ------------ # ELV_RCGN.DLL # ------------ elv_rcgn_head : elv_rcgn.res elv_rcgn.dll elv_rcgn.def : elv_rcgn.res : $(ELV_RCGN_RSRCS) rc -r $(RCDEFINES) elv_rcgn.rc elv_rcgn.dll :: elv_rcgn.def $(ELV_RCGN_OBJS) link $(DLL_LINKFLAGS) $(ELV_RCGN_OBJS), elv_rcgn, NUL, $(DLL_SYSLIBS) $(ELV_UTILDLLS), elv_rcgn implib elv_rcgn.lib elv_rcgn.def rc $*.res $*.dll elv_rcgn.dll :: elv_rcgn.res rc $*.res $*.dll # ------------ # ELV_UTIL.DLL # ------------ elv_util_head : elv_util.res elv_util.dll elv_util.def : elv_util.res : $(ELV_UTIL_RSRCS) rc -r $(RCDEFINES) elv_util.rc elv_util.dll :: elv_util.def $(ELV_UTIL_OBJS) link $(DLL_LINKFLAGS) $(ELV_UTIL_OBJS), elv_util, NUL, $(DLL_SYSLIBS), elv_util implib elv_util.lib elv_util.def rc $*.res $*.dll elv_util.dll :: elv_util.res rc $*.res $*.dll # ------------------------ # ELV_CRTL.DLL - LINK ONLY # ------------------------ elv_crtl.dll : elv_crtl.def link /NOD /NOE /NOI $(ELV_CRTL_OBJS),elv_crtl.dll,,cdllobjs+os2,elv_crtl.def implib elv_crtl.lib elv_crtl.def mlib elv_crtl.lib+c:\c600\lib\cdllsupp.lib ; ############################################################################### # # # .ASM SOURCE FILES # # # ############################################################################### # None as of 05-Jul-1991 ############################################################################### # # # .C SOURCE FILES, GROUPED BY .EXE or .DLL # # # ############################################################################### # ------------ # ELVIRA3.EXE # ------------ config.obj : config.c elv_base.h config.h config$.h elv_exe.h version.h fileio.h util.h cl $(EXE_CFLAGS) $< elvira3.obj : elvira3.c elv_base.h elvira3$.h elv_exe.h version.h null.h help11.h helpid11.h fileio.h print.h status.h util.h config.h processe.h cl $(EXE_CFLAGS) $< process.obj : process.c elv_base.h elv_exe.h version.h util.h cl $(EXE_CFLAGS) $< # ------------ # ELV_B100.DLL # ------------ b100elv3.obj : b100elv3.c b100os2.h b100elv3.h b100mdem.h cl $(DLL_CFLAGS) $< b100os2.obj : b100os2.c b100os2.h cl $(DLL_CFLAGS) $< b100mdem.obj : b100mdem.c b100os2.h b100mdem.h b100psk.h cl $(DLL_CFLAGS) $< # ------------ # ELV_CLCT.DLL # ------------ datacoll.obj : datacoll.c elv_base.h version.h fileio.h util.h b100os2.h b100elv3.h datacol$.h datacoll.h portia.h cmpndtbl.h cl $(DLL_CFLAGS) $< rxctl.obj : rxctl.c elv_base.h version.h util.h fileio.h rxctl.h rxctl$.h cl $(DLL_CFLAGS) $< scan.obj : scan.c elv_base.h version.h util.h fileio.h b100os2.h b100elv3.h scan$.h scanfunc.h cl $(DLL_CFLAGS) $< scanfunc.obj : scanfunc.c elv_base.h version.h util.h b100os2.h b100elv3.h scan$.h scanfunc.h fileio.h cmpndtbl.h cl $(DLL_CFLAGS) $< siggen.obj : siggen.c elv_base.h version.h util.h siggen.h siggen$.h fileio.h cmpndtbl.h cl $(DLL_CFLAGS) $< sim.obj : sim.c elv_base.h version.h util.h fileio.h sim.h sim$.h cl $(DLL_CFLAGS) $< # ------------ # ELV_DISP.DLL # ------------ bitplot.obj : bitplot.c elv_base.h version.h fileio.h util.h cl $(DLL_CFLAGS) $< dataplot.obj : dataplot.c elv_base.h version.h dataplo$.h util.h cmpndtbl.h cl $(DLL_CFLAGS) $< text.obj : text.c elv_base.h version.h util.h cl $(DLL_CFLAGS) $< # ------------ # ELV_DMOD.DLL # ------------ anlgdmod.obj : anlgdmod.c elv_base.h version.h anlgdmod.h anlgdmo$.h cmpndtbl.h b100mdem.h util.h fileio.h cl $(DLL_CFLAGS) $< bpskdmod.obj : bpskdmod.c elv_base.h version.h bpskdmod.h bpskdmo$.h cmpndtbl.h util.h fileio.h cl $(DLL_CFLAGS) $< fskdmod.obj : fskdmod.c elv_base.h version.h fskdmod.h fskdmod$.h cmpndtbl.h fileio.h util.h cl $(DLL_CFLAGS) $< modem.obj : modem.c elv_base.h util.h version.h b100os2.h b100elv3.h b100mdem.h b100psk.h modem.h modem$.h cmpndtbl.h fileio.h cl $(DLL_CFLAGS) $< # ------------ # ELV_FAX.DLL # ------------ decutil.obj : decutil.c elv_base.h util.h version.h null.h help11.h helpid11.h fax.h decutil.h cl $(DLL_CFLAGS) $< fax.obj : fax.c elv_base.h util.h version.h null.h help11.h helpid11.h null.ext lm_dxi.h fax.h decutil.h fileio.h fax$.h cl $(DLL_CFLAGS) $< # ------------ # ELV_FILE.DLL # ------------ fileio.obj : fileio.c easyfont.h elv_base.h util.h fileio.h fileio$.h cl $(DLL_CFLAGS) $< # ------------ # ELV_LOR.DLL # ------------ bitproc.obj : bitproc.c elv_base.h version.h bitproc.h bitproc$.h util.h fileio.h cl $(DLL_CFLAGS) $< # ------------ # ELV_MLTI.DLL # ------------ classify.obj : classify.c elv_base.h util.h version.h chclass.h portia.h fileio.h b100os2.h b100elv3.h classify.h classif$.h cl $(DLL_CFLAGS) $< energy.obj : energy.c elv_base.h version.h elv_mlti.h energy.h energy$.h fileio.h util.h cl $(DLL_CFLAGS) $< fsk.obj : fsk.c elv_base.h version.h elv_mlti.h fsk.h fsk$.h fileio.h util.h cl $(DLL_CFLAGS) $< searche.obj : searche.c elv_base.h version.h elv_mlti.h b100por.h portia.h fileio.h chclass.h searche.h searche$.h util.h cl $(DLL_CFLAGS) $< spltband.obj : spltband.c elv_base.h version.h elv_mlti.h spltbndf.h spltband.h spltban$.h fileio.h util.h cl $(DLL_CFLAGS) $< topid.obj : topid.c elv_base.h version.h elv_mlti.h topid.h topid$.h fileio.h util.h cl $(DLL_CFLAGS) $< vftid.obj : vftid.c elv_base.h version.h elv_mlti.h vftid.h vftid$.h fileio.h util.h cl $(DLL_CFLAGS) $< # ------------ # ELV_NAA.DLL # ------------ casdecod.obj : casdecod.c elv_base.h version.h casdeco$.h util.h cl $(DLL_CFLAGS) $< hdlc.obj : hdlc.c elv_base.h version.h hdlc$.h cmpndtbl.h util.h cl $(DLL_CFLAGS) $< sif.obj : sif.c elv_base.h version.h sif$.h util.h cl $(DLL_CFLAGS) $< naa.obj : naa.c elv_base.h version.h naaglb.h naa$.h util.h cl $(DLL_CFLAGS) $< naaclass.obj : naaclass.c elv_base.h version.h naaglb.h util.h cl $(DLL_CFLAGS) $< naadecod.obj : naadecod.c elv_base.h version.h naaglb.h util.h cl $(DLL_CFLAGS) $< naaevent.obj : naaevent.c elv_base.h naaglb.h naaeven$.h version.h util.h cl $(DLL_CFLAGS) $< mar.obj : mar.c elv_base.h version.h mar$.h util.h cl $(DLL_CFLAGS) $< # ------------ # ELV_PROC.DLL # ------------ fft.obj : fft.c elv_base.h version.h fft$.h cmpndtbl.h fileio.h util.h cl $(DLL_CFLAGS) $< filter.obj : filter.c elv_base.h version.h filter$.h cmpndtbl.h fileio.h util.h cl $(DLL_CFLAGS) $< mathe.obj : mathe.c elv_base.h version.h mathe$.h cmpndtbl.h util.h fileio.h cl $(DLL_CFLAGS) $< resample.obj : resample.c elv_base.h version.h util.h resampl$.h cmpndtbl.h fileio.h cl $(DLL_CFLAGS) $< # ------------ # ELV_RCGN.DLL # ------------ baudline.obj : baudline.c elv_base.h version.h elv_mlti.h baudline.h baudlin$.h fileio.h util.h cl $(DLL_CFLAGS) $< carrier.obj : carrier.c elv_base.h version.h elv_mlti.h carrier.h carrier$.h fileio.h util.h cl $(DLL_CFLAGS) $< recognz.obj : recognz.c elv_base.h version.h fileio.h util.h recognz.h recognz$.h cl $(DLL_CFLAGS) $< # ------------ # ELV_UTIL.DLL # ------------ help11.obj : help11.c elv_base.h version.h util.h help11.h helpid11.h cl $(DLL_CFLAGS) $< print.obj : print.c elv_base.h print$.h print.h version.h util.h null.h help11.h helpid11.h cl $(DLL_CFLAGS) $< status.obj : status.c elv_base.h status$.h status.h util.h cl $(EXE_CFLAGS) $< util.obj : util.c elv_base.h b100os2.h b100elv3.h elv_mlti.h util.h version.h null.h help11.h helpid11.h cl $(DLL_CFLAGS) $<
- ELV_CRTL.DEF
;//////////////////////////////////////////////////////////////////////////// ;//////////////////////////////////////////////////////////////////////////// ; ; ELV_CRTL.DEF ; ; Definition file for ELV_CRTL.DLL ; ;////////////////////////////////////////////////////////////////////////////// ;////////////////////////////////////////////////////////////////////////////// LIBRARY ELV_CRTL INITINSTANCE DESCRIPTION 'Microsoft C 6.0 Run Time Library DLL' DATA MULTIPLE SEGMENTS _IOSEG CLASS 'IOSEG_CODE' IOPL PROTMODE EXPORTS ATOF DIFFTIME LDIV STRTOD _abort _abs _access _alloca _asctime _atexit _atoi _atol _bsearch _calloc _cgets _chdir __chdrive _chmod _chsize _clearerr _clock _close _cprintf _cputs _creat _cscanf _ctime _cwait _div _dup _dup2 _ecvt _eof _environ __errno _execl _execle _execlp _execlpe _execv _execve _execvp _execvpe _exit _fclose _fcloseall _fcvt _fdopen _feof _ferror _fflush _fgetc _fgetchar _fgetpos _fgets _filelength _fileno _flushall _fopen __fsopen _fprintf _fputc _fputchar _fputs _fread _free _freopen _fscanf _fseek _fsetpos _fstat _ftell _ftime __fullpath _fwrite _gcvt _getc _getch _getchar _getche _getcwd __getdcwd __getdrive _getenv _getpid _gets _getw _gmtime _halloc _hfree _inp _inpw _isalnum _isalpha _isascii _isatty _iscntrl _iscsym _iscsymf _isdigit _isgraph _islower _isprint _ispunct _isspace _isupper _isxdigit _itoa _kbhit _labs _lfind _localeconv _localtime _locking _longjmp _lsearch _lseek _ltoa _malloc _memccpy _memchr _memcmp _memcpy _memicmp _memmove _memset _mkdir _mktemp _mktime _movedata _onexit _open _outp _outpw __pclose _perror __pipe __popen _printf _putc _putch _putchar _putenv _puts _putw _qsort _rand _realloc _read _remove _rename _rewind _rmdir _rmtmp _scanf _segread _setbuf _setjmp _setlocale _setmode _setvbuf _signal _sopen _spawnl _spawnle _spawnlp _spawnlpe _spawnv _spawnve _spawnvp _spawnvpe _sprintf _srand _sscanf _stackavail _stat _strcat _strchr _strcmp _strcmpi _strcoll _strcpy _strcspn _strdup _strerror _strftime _stricmp _strlen _strlwr _strncat _strncmp _strncpy _strnicmp _strnset _strpbrk _strrchr _strrev _strset _strspn _strstr _strtok _strtol _strtoul _strupr _strxfrm _swab _system _tell _tempnam _time _tmpfile _tmpnam _toascii _tolower __tolower _toupper __toupper _tzset _ultoa _umask _ungetc _ungetch _unlink _utime _vfprintf _vprintf _vsprintf _wait _write _daylight _timezone _tzname __aDBused __aFchkstk __aFrchkstk __aFFaldiv __aFFalmul __aFFalrem __aFFalshl __aFFalshr __aFFauldiv __aFFaulmul __aFFaulrem __aFFaulshr __aFahdiff __aFldiv __aFllrot __aFlmul __aFlrem __aFlrrot __aFlshl __aFlshr __aFNaldiv __aFNalmul __aFNalrem __aFNalshl __aFNalshr __aFNauldiv __aFNaulmul __aFNaulrem __aFNaulshr __aFuldiv __aFulmul __aFulrem __aFulshr __amblksiz __assert __beginthread __cexit __c_exit __chkstk __ctype __CRT_INIT __dll_heapadd __dll_ncalloc __dll_nexpand __dll_nfree __dll_nfreect __dll_nheapchk __dll_nheapset __dll_nheapwalk __dll_nmalloc __dll_nmemavl __dll_nmemmax __dll_nheapmin __dll_nrealloc __endthread __exit __bheapadd __bcalloc __bexpand __bfree __bfreeseg __bheapchk __bheapseg __bheapset __bheapwalk __bmalloc __bheapmin __brealloc __bmsize __expand __fcalloc __fexpand __ffree __fheapchk __fheapset __fheapwalk __fmalloc __fheapmin __fileinfo __fmemccpy __fmemchr __fmemcmp __fmemcpy __fmemicmp __fmemmove __fmemset __fmode __fmsize __frealloc __fstrcat __fstrchr __fstrcmp __fstricmp __fstrcpy __fstrcspn __fstrdup __fstrlen __fstrlwr __fstrncat __fstrncmp __fstrnicmp __fstrncpy __fstrnset __fstrpbrk __fstrrchr __fstrrev __fstrset __fstrspn __fstrstr __fstrtok __fstrupr __heapchk __heapset __iob __heapwalk __lrotl __lrotr __makepath __heapmin __msize __nmsize __QCfptr_error __QCnptr_error __rotl __rotr __searchenv __splitpath __strdate __strerror __strtime ___doserrno ACOS ASIN ATAN ATAN2 CABS CEIL COS COSH EXP FABS FLOOR FMOD FREXP HYPOT J0 J1 JN LDEXP LOG LOG10 MODF POW SIN SINH SQRT TAN TANH Y0 Y1 YN _dieeetomsbin _dmsbintoieee _fieeetomsbin _fmsbintoieee _HUGE _matherr __aFCIacos __aFCIasin __aFCIatan __aFCIatan2 __aFCIceil __aFCIcos __aFCIcosh __aFCIexp __aFCIfabs __aFCIfloor __aFCIfmod __aFCIlog __aFCIlog10 __aFCImax __aFCImin __aFCIpow __aFCIsin __aFCIsinh __aFCIsqrt __aFCItan __aFCItanh __clear87 __control87 __fltused __fpreset __status87 __aFdcvt __aFeaddd __aFeadds __aFedivd __aFedivdr __aFedivs __aFedivsr __aFeldd __aFeldl __aFeldq __aFelds __aFeldt __aFeldw __aFemuld __aFemuls __aFestd __aFestdp __aFests __aFestsp __aFesttp __aFesubd __aFesubdr __aFesubs __aFesubsr __aFfabs __aFfadd __aFfaddd __aFfadds __aFfchs __aFfcmp __aFfcompp __aFfdiv __aFfdivd __aFfdivdr __aFfdivr __aFfdivs __aFfdivsr __aFfdup __aFfld1 __aFfldd __aFfldl __aFfldq __aFflds __aFfldt __aFfldw __aFfldz __aFfmul __aFfmuld __aFfmuls __aFfstd __aFfstdp __aFfsts __aFfstsp __aFfsttp __aFfsub __aFfsubd __aFfsubdr __aFfsubr __aFfsubs __aFfsubsr __aFftol __aFftst __aFfxch __aFsaddd __aFsadds __aFsdivd __aFsdivdr __aFsdivs __aFsdivsr __aFsldd __aFsldl __aFsldq __aFslds __aFsldt __aFsldw __aFsmuld __aFsmuls __aFsstd __aFsstdp __aFssts __aFsstsp __aFssttp __aFssubd __aFssubdr __aFssubs __aFssubsr _acosl _asinl _atanl _atan2l _cabsl _ceill _cosl _coshl _expl _fabsl _floorl _fmodl _hypotl _ldexpl _logl _log10l _modfl _powl _sinl _sinhl _sqrtl _tanl _tanhl __atold __fac __j0l __j1l __jnl __LHUGE __matherrl __strtold __y0l __y1l __ynl __aFCIacosl __aFCIasinl __aFCIatanl __aFCIatan2l __aFCIceill __aFCIcosl __aFCIcoshl __aFCIexpl __aFCIfloorl __aFCIfmodl __aFCIlogl __aFCIlog10l __aFCIpowl __aFCIsinl __aFCIsinhl __aFCIsqrtl __aFCItanl __aFCItanhl
- ELV_DISP.DEF
;//////////////////////////////////////////////////////////////////////////// ;//////////////////////////////////////////////////////////////////////////// ; ; ELV_DISP.DEF ; ; DEFINITION FILE FOR ELV_DISP.DLL ; ;////////////////////////////////////////////////////////////////////////////// ;////////////////////////////////////////////////////////////////////////////// LIBRARY ELV_DISP INITINSTANCE DESCRIPTION 'ELVIRA DISPLAY DLL' PROTMODE DATA MULTIPLE HEAPSIZE 8192 EXPORTS MODULEINIT03 MODULE03 MODULEMODIFY03 BITPLOTPROC MODULEINIT01 MODULE01 MODULEMODIFY01 MANUALSCALEDLGPROC MODULEINIT25 MODULE25 MODULEMODIFY25
- ELV_DISP.RC
////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // ELV_DISP.RC // /////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// #include <os2.h> #include "version.h" // Version specific stuff /***********************************************************************/ /* Data Plot Files */ #ifdef INC_DATAPLOT #include "dataplo$.h" rcinclude dataplo$.dlg #endif