home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v3.zip / INF / DDE4UTIL.INF (.txt) < prev    next >
OS/2 Help File  |  1993-10-08  |  51KB  |  1,515 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  3.  
  4.  
  5. ΓòÉΓòÉΓòÉ 1.1. Copyright ΓòÉΓòÉΓòÉ
  6.  
  7. Copyright International Business Machines Corporation, 1992, 1993. All rights 
  8. reserved. 
  9.  
  10. Note to U.S. Government Users - Documentation related to restricted rights - 
  11. Use, duplication, or disclosure is subject to restrictions set forth in GSA ADP 
  12. Schedule Contract with IBM* Corp. 
  13.  
  14.  
  15. ΓòÉΓòÉΓòÉ 1.2. Edition Notice ΓòÉΓòÉΓòÉ
  16.  
  17. Second Edition, November 1993. 
  18.  
  19. This edition applies to Version 2.01 of IBM* C/C++ Tools (82G3732, 82G3733, 
  20. 82G3735, 82G3736) and to all subsequent releases and modifications until 
  21. otherwise indicated in new editions.  This publication could include technical 
  22. inaccuracies or typographical errors.  Changes are periodically made to the 
  23. information herein; any such changes will be reported in subsequent revisions. 
  24.  
  25. Requests for publications and for technical information about IBM products 
  26. should be made to your IBM Authorized Dealer or your IBM Marketing 
  27. Representative. 
  28.  
  29. When you send information to IBM, you grant IBM a nonexclusive right to use or 
  30. distribute the information in any ways it believes appropriate without 
  31. incurring any obligation to you. 
  32.  
  33.  
  34. ΓòÉΓòÉΓòÉ 1.3. Special Notices ΓòÉΓòÉΓòÉ
  35.  
  36. References in this help to IBM* products, programs, or services do not imply 
  37. that IBM intends to make these available in all countries in which IBM 
  38. operates. 
  39.  
  40. Any reference to an IBM licensed program in this help is not intended to state 
  41. or imply that only IBM's licensed program may be used.  Any functionally 
  42. equivalent product, program, or service that does not infringe on any of IBM's 
  43. intellectual property rights may be used instead of the IBM product, program, 
  44. or service. 
  45.  
  46. Evaluation and verification of operation in conjunction with other products, 
  47. except those expressly designated by IBM, is the user's responsibility. 
  48.  
  49. IBM may have patents or pending patent applications covering subject matter in 
  50. this help.  The furnishing of this help does not give you any license to these 
  51. patents. 
  52.  
  53. The following terms, denoted by an asterisk (*) in this help, are trademarks of 
  54. the IBM corporation in the United States and/or other countries: 
  55.  
  56.  C Set ++ 
  57.  C/C++ FirstStep 
  58.  IBM 
  59.  OS/2 
  60.  Operating System/2 
  61.  Presentation Manager 
  62.  WorkFrame/2. 
  63.  
  64. The following terms, denoted by a double asterisk (**) in this help, are 
  65. trademarks of the Microsoft Corporation: 
  66.  
  67.  Microsoft 
  68.  Windows. 
  69.  
  70. This help contains examples of data and reports used in daily business 
  71. operations.  To illustrate them as completely as possible, the examples include 
  72. the names of individuals, companies, brands, and products.  All of these names 
  73. are fictitious and any similarity to the names and addresses used by an actual 
  74. business enterprise is entirely coincidental. 
  75.  
  76.  
  77. ΓòÉΓòÉΓòÉ 2. ------------------------------------------------------------------------------ ΓòÉΓòÉΓòÉ
  78.  
  79.  
  80. ΓòÉΓòÉΓòÉ 3. Demangling Compiled C++ Names with CPPFILT ΓòÉΓòÉΓòÉ
  81.  
  82. When the IBM* C/C++ Tools compiler compiles a C++ program, it encodes all C++ 
  83. symbolic names to include type and scoping information.  This encoding process 
  84. is called mangling. The linker uses the mangled names in the object files to 
  85. resolve external references using the exported names. 
  86.  
  87. Tools that use the files with mangled names do not have access to the original 
  88. source code names, and therefore present the mangled names in their output. 
  89. Using a process called demangling, the cppfilt utility converts the mangled 
  90. names to their original source code names so that they can be easily 
  91. identified. 
  92.  
  93. Note:  The demangling routines in the runtime library provided with C/C++ Tools 
  94.        offer another method for converting mangled names to their original 
  95.        source code names.  You can use these routines to develop tools that 
  96.        manipulate mangled names.  For more information on the demangling 
  97.        routines, refer to the appendix on Mapping in the IBM C/C++ Tools: 
  98.        Programming Guide, and the information in the <demangle.h> header file. 
  99.  
  100.  
  101. ΓòÉΓòÉΓòÉ <hidden> Exported Names ΓòÉΓòÉΓòÉ
  102.  
  103. Exported names are functions and certain other identifiers that are made 
  104. available to programs that call the DLL in which the names are defined. 
  105.  
  106. For more information on how to identify symbolic names for export from a DLL, 
  107. refer to the chapter on Building Dynamic Link Libraries in the IBM C/C++ Tools: 
  108. Programming Guide. 
  109.  
  110.  
  111. ΓòÉΓòÉΓòÉ 3.1. Using the CPPFILT Utility ΓòÉΓòÉΓòÉ
  112.  
  113. The cppfilt utility converts mangled names to demangled names in two separate 
  114. modes: 
  115.  
  116. Text     Specify the names of one or more ASCII text files to have the cppfilt 
  117.          substitute demangled names for mangled names wherever it finds them in 
  118.          the text.  Input can also be read from stdin. 
  119.  
  120. Binary   Specify the names of one or more object (.OBJ) and library (.LIB) 
  121.          files to produce demangled output in a format that is suitable for 
  122.          inclusion in a DLL module definition (.DEF) file. 
  123.  
  124. All output is sent to stdout. 
  125.  
  126.  
  127. ΓòÉΓòÉΓòÉ 3.2. Text mode ΓòÉΓòÉΓòÉ
  128.  
  129. Use the cppfilt utility in Text mode when you want to simply substitute 
  130. demangled names for mangled names wherever they are found in the text. 
  131.  
  132. To use the cppfilt utility in text mode, type cppfilt followed by any valid 
  133. text mode options on the OS/2* command line. 
  134.  
  135. The syntax for the cppfilt command in Text mode is: 
  136.  
  137.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  138. ΓöÇΓöÇcppfiltΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇΓöÇ
  139.                ΓööΓöÇΓöÇ/optionΓöÇΓöÇΓöÇΓöÿ
  140.  
  141.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  142. ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  143.       ΓööΓöÇΓöÇtext-filenameΓöÇΓöÿ
  144.  
  145.  
  146. ΓòÉΓòÉΓòÉ 3.2.1. Text Mode Options ΓòÉΓòÉΓòÉ
  147.  
  148. The cppfilt utility has the following options in Text mode: 
  149.  
  150. /C 
  151. /H or /? 
  152. /M 
  153. /Q 
  154. /S 
  155. /T 
  156. /W nnn 
  157.  
  158. Note:  You can specify options using the slash form (/S) or the dash form (-S). 
  159.  
  160.  
  161. ΓòÉΓòÉΓòÉ 3.2.1.1. Class Names ΓòÉΓòÉΓòÉ
  162.  
  163. Specify the /C option on the cppfilt command line to instruct the cppfilt 
  164. utility to demangle stand-alone class names.  Stand-alone class names are names 
  165. that do not appear within the context of a function name or member variable. 
  166. These names are not normally produced by the compiler. 
  167.  
  168. For example, the stand-alone class name Q2_1X1Y would be demangled as X::Y if 
  169. you specify the /C option. 
  170.  
  171. If you do not specify the /C option, the default is not to demangle stand-alone 
  172. class names. 
  173.  
  174.  
  175. ΓòÉΓòÉΓòÉ 3.2.1.2. Help ΓòÉΓòÉΓòÉ
  176.  
  177. Specify the /H or /? option on the cppfilt command line to see a short online 
  178. help on the cppfilt command syntax and options. 
  179.  
  180. If you do not specify this option, the default is not to display any online 
  181. help. 
  182.  
  183.  
  184. ΓòÉΓòÉΓòÉ 3.2.1.3. Symbol Map ΓòÉΓòÉΓòÉ
  185.  
  186. Specify the /M option on the cppfilt command line to produce a symbol map on 
  187. standard output.  The map contains a list of the mangled names and their 
  188. corresponding demangled names. This output follows the normal filtered output. 
  189.  
  190. If you do not specify the /M option, the default is not to produce a symbol 
  191. map. 
  192.  
  193.  
  194. ΓòÉΓòÉΓòÉ 3.2.1.4. Do Not Display Logo ΓòÉΓòÉΓòÉ
  195.  
  196. Specify the /Q option on the cppfilt command line to suppress the display of 
  197. the logo and copyright notice for the cppfilt utility. 
  198.  
  199. If you do not specify this option, the default is to display the logo and 
  200. copyright notice. 
  201.  
  202.  
  203. ΓòÉΓòÉΓòÉ 3.2.1.5. Mangled and Demangled Names Together ΓòÉΓòÉΓòÉ
  204.  
  205. Specify the /T option on the cppfilt command line to produce side-by-side 
  206. demangling.  That is, each mangled name is replaced with the demangled name 
  207. followed by the original mangled name in the text. 
  208.  
  209. If you do not specify the /T option, the default is to replace the mangled name 
  210. by the demangled name only. 
  211.  
  212.  
  213. ΓòÉΓòÉΓòÉ 3.2.1.6. Width ΓòÉΓòÉΓòÉ
  214.  
  215. Specify the /W width option on the cppfilt command line to have the cppfilt 
  216. utility print the demangled names in fields width characters wide.  If the name 
  217. is shorter than width, it is padded to the right with blanks; if longer, it is 
  218. truncated to width characters. 
  219.  
  220. If you do not specify the /W width option, the default is not to have a fixed 
  221. field width when printing demangled names in the text. 
  222.  
  223.  
  224. ΓòÉΓòÉΓòÉ 3.2.1.7. Special Symbol Names ΓòÉΓòÉΓòÉ
  225.  
  226. Specify the /S option on the cppfilt command line to instruct the cppfilt 
  227. utility to demangle special compiler-generated symbol names. 
  228.  
  229. For example, the compiler-generated symbol name, __ct__3FooFUi, that represents 
  230. a constructor for the class Foo, would be demangled as Foo::Foo(unsigned int). 
  231.  
  232. If you do not specify the /S option, the default is not to demangle special 
  233. compiler-generated symbol names. 
  234.  
  235.  
  236. ΓòÉΓòÉΓòÉ 3.2.2. Text Files ΓòÉΓòÉΓòÉ
  237.  
  238. The file you specify for the cppfilt command in text mode should be an ASCII 
  239. text file that is present in the current directory, unless you specify its 
  240. path. 
  241.  
  242. If you do not specify a text file, the input is read from stdin. 
  243.  
  244.  
  245. ΓòÉΓòÉΓòÉ 3.2.3. Output in Text Mode ΓòÉΓòÉΓòÉ
  246.  
  247. Output in text mode would be the input text with the mangled names replaced by 
  248. their demangled names wherever they are found in the text. 
  249.  
  250. All output is sent to stdout. 
  251.  
  252.  
  253. ΓòÉΓòÉΓòÉ 3.3. Binary Mode ΓòÉΓòÉΓòÉ
  254.  
  255. Use the cppfilt utility in Binary mode when you want to demangle names in 
  256. object (.OBJ) and library (.LIB) files to produce output that is suitable for 
  257. inclusion in a DLL module definition (.DEF) file. 
  258.  
  259. To use the cppfilt utility in Binary mode, type cppfilt /B followed by any 
  260. valid Binary mode options on the OS/2* command line. The cppfilt utility 
  261. switches to the Binary mode of operation when it encounters the /B option. 
  262.  
  263. The syntax for the cppfilt command in Binary mode is: 
  264.  
  265.                  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  266. ΓöÇΓöÇcppfiltΓöÇΓöÇ/BΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
  267.                    ΓööΓöÇΓöÇ/optionΓöÇΓöÇΓöÇΓöÿ
  268.  
  269.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  270. ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ.OBJ-filenameΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  271.       ΓööΓöÇΓöÇ.LIB-filenameΓöÇΓöÿ
  272.  
  273.  
  274. ΓòÉΓòÉΓòÉ 3.3.1. Binary Mode Options ΓòÉΓòÉΓòÉ
  275.  
  276. The Binary mode of the cppfilt utility has the following options: 
  277.  
  278. /H or /? 
  279. /N 
  280. /O [ord] 
  281. /P 
  282. /Q 
  283. /R 
  284. /S 
  285. /X 
  286.  
  287. Note:  You can specify options using the slash form (/R) or the dash form (-R). 
  288.  
  289.  
  290. ΓòÉΓòÉΓòÉ 3.3.1.1. Operate in Binary Mode ΓòÉΓòÉΓòÉ
  291.  
  292. Specify /B on the cppfilt command line to instruct cppfilt to operate in Binary 
  293. mode. 
  294.  
  295. If you do not specify the /B option, cppfilt will operate in the default Text 
  296. mode. 
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ 3.3.1.2. Exported Symbols ΓòÉΓòÉΓòÉ
  300.  
  301. Specify the /X option on the cppfilt command line to include all exported ( 
  302. EXPDEF ) symbols in the output. 
  303.  
  304. If you do not specify the /X option, the default is not to include exported 
  305. symbols in the output. 
  306.  
  307. Note:  If you do not specify any of the /X, /R, or /P options, the Binary mode 
  308.        output will include only the library and object names, without any 
  309.        symbol names. 
  310.  
  311.  
  312. ΓòÉΓòÉΓòÉ 3.3.1.3. Referenced Symbols ΓòÉΓòÉΓòÉ
  313.  
  314. Specify the /R option on the cppfilt command line to include all referenced ( 
  315. EXTDEF ) symbols in the output. 
  316.  
  317. If you do not specify this option, the default is not to include referenced 
  318. symbols in the output. 
  319.  
  320. Note:  If you do not specify any of the /X, /R, or /P options, the Binary mode 
  321.        output will include only the library and object names, without any 
  322.        symbol names. 
  323.  
  324.  
  325. ΓòÉΓòÉΓòÉ 3.3.1.4. Public Symbols ΓòÉΓòÉΓòÉ
  326.  
  327. Specify the /P option on the cppfilt command line to include all public ( 
  328. PUBDEF, COMDAT, COMDEF ) symbols in the output. 
  329.  
  330. Note:  Only the first occurrence of a symbol found within the COMDAT sections 
  331.        will be included in the output.  Subsequent occurrences of the same 
  332.        COMDAT symbol will appear as comments in the output. 
  333.  
  334. If you do not specify this option, the default is not to include public symbols 
  335. in the output. 
  336.  
  337. Note:  If you do not specify any of the /X, /R, or /P options, the Binary mode 
  338.        output will include only the library and object names, without any 
  339.        symbol names. 
  340.  
  341.  
  342. ΓòÉΓòÉΓòÉ 3.3.1.5. Special Symbol Names ΓòÉΓòÉΓòÉ
  343.  
  344. Specify the /S option on the cppfilt command line to instruct the cppfilt 
  345. utility to demangle special compiler-generated symbol names. 
  346.  
  347. For example, the compiler-generated symbol name, __ct__3FooFUi, that represents 
  348. a constructor for the class Foo, would be demangled as Foo::Foo(unsigned int). 
  349.  
  350. If you do not specify the /S option, the default is not to demangle special 
  351. compiler-generated symbol names. 
  352.  
  353.  
  354. ΓòÉΓòÉΓòÉ 3.3.1.6. Ordinals ΓòÉΓòÉΓòÉ
  355.  
  356. Specify the /o [ord] option on the cppfilt command line to generate ordinals 
  357. after each demangled name.  If the optional numeric parameter ord  is 
  358. specified, cppfilt will generate the ordinals starting from ord. 
  359.  
  360. The ordinals are generated along with the @ character as consistent with the 
  361. module definition (.DEF) file EXPORTS statement syntax. 
  362.  
  363. For example, with the /o 1000 option specified, the output for a single name 
  364. would look something like this: 
  365.  
  366. ;ILinkedSequenceImpl::isConsistent() const 
  367. isConsistent__19ILinkedSequenceImplCFv   @1000 
  368.  
  369. If you do not specify the /o option, the default is not to generate ordinals 
  370. after each demangled name. 
  371.  
  372. For more information on using module definition files, refer to the IBM* OS/2* 
  373. Developer's Toolkit online Tools Reference for the LINK386 program. 
  374.  
  375.  
  376. ΓòÉΓòÉΓòÉ 3.3.1.7. NONAME Keyword ΓòÉΓòÉΓòÉ
  377.  
  378. Specify the /n option on the cppfilt command line to instruct cppfilt to 
  379. generate the NONAME keyword as consistent with the module definition (.DEF) 
  380. file EXPORTS statement syntax.  The NONAME keyword indicates that the exported 
  381. names should be referenced by their ordinals, and not by their names. 
  382.  
  383. Note:  You should also specify the /n together with the /o option to generate 
  384.        ordinals. 
  385.  
  386. For example, if you specify the /n /o 1000 options, the output for a single 
  387. name would look something like this: 
  388.  
  389. ;ILinkedSequenceImpl::isConsistent() const
  390. isConsistent__19ILinkedSequenceImplCFv   @1000 NONAME
  391.  
  392. For more information on using module definition files, refer to the IBM* OS/2* 
  393. Developer's Toolkit online Tools Reference for the LINK386 linker. 
  394.  
  395.  
  396. ΓòÉΓòÉΓòÉ 3.3.1.8. Help ΓòÉΓòÉΓòÉ
  397.  
  398.  
  399. ΓòÉΓòÉΓòÉ 3.3.1.9. Do Not Display Logo ΓòÉΓòÉΓòÉ
  400.  
  401.  
  402. ΓòÉΓòÉΓòÉ 3.3.2. .OBJ and .LIB Files ΓòÉΓòÉΓòÉ
  403.  
  404. The filenames that you specify after the cppfilt /B Binary mode command must be 
  405. object (.OBJ) or library (.LIB) files.  They must be present in the current 
  406. directory, unless their paths are specified. cppfilt will also search for 
  407. library files along the paths specified in the LIB environment variable if the 
  408. files are not found in the current directory. 
  409.  
  410. Input cannot be read from stdin in Binary mode.  You must specify object or 
  411. library filenames for input. 
  412.  
  413. All output is sent to stdout. 
  414.  
  415.  
  416. ΓòÉΓòÉΓòÉ 3.3.3. Output in Binary Mode ΓòÉΓòÉΓòÉ
  417.  
  418. cppfilt output in Binary mode lists any libraries and any object files within 
  419. each library.  If you specify the /X, /R, and /P options, the exported, 
  420. referenced, and public symbols are also listed for each object file. 
  421.  
  422. For example, the command 
  423.  
  424. cppfilt /B /P /O 1000 /N c:\ibmcpp\lib\dde4cc.lib
  425.  
  426. would produce the following output for a library file called DDE4CC.LIB: 
  427.  
  428. ;From library:  c:\ibmcpp\lib\dde4cc.lib
  429.  ;From object file:  C:\ibmcpp\src\IILNSEQ.C
  430.   ;PUBDEFs (Symbols available from object file):
  431.    ;ILinkedSequenceImpl::setToPrevious(ILinkedSequenceImpl::Node*&) const
  432.    setToPrevious__19ILinkedSequenceImplCFRPQ2_19ILinkedSequenceImpl4Node   @1000 NONAME
  433.    ;ILinkedSequenceImpl::allElementsDo(void*,void*) const
  434.    allElementsDo__19ILinkedSequenceImplCFPvT1   @1001 NONAME
  435.    ;ILinkedSequenceImpl::isConsistent() const
  436.    isConsistent__19ILinkedSequenceImplCFv   @1002 NONAME
  437.    ;ILinkedSequenceImpl::setToNext(ILinkedSequenceImpl::Node*&) const
  438.    setToNext__19ILinkedSequenceImplCFRPQ2_19ILinkedSequenceImpl4Node   @1003 NONAME
  439.    ;ILinkedSequenceImpl::addAsNext(ILinkedSequenceImpl::Node*,ILinkedSequenceImpl::Node*)
  440.    addAsNext__19ILinkedSequenceImplFPQ2_19ILinkedSequenceImpl4NodeT1   @1004 NONAME
  441.  ;From object file:  C:\ibmcpp\src\IITBSEQ.C
  442.   ;PUBDEFs (Symbols available from object file):
  443.    ;ITabularSequenceImpl::setToPrevious(ITabularSequenceImpl::Cursor&) const
  444.    setToPrevious__20ITabularSequenceImplCFRQ2_20ITabularSequenceImpl6Cursor   @1034 NONAME
  445.    ;ITabularSequenceImpl::allElementsDo(void*)
  446.    allElementsDo__20ITabularSequenceImplFPv   @1035 NONAME
  447.    ;ITabularSequenceImpl::removeAll(void*,void*)
  448.    removeAll__20ITabularSequenceImplFPvT1   @1036 NONAME
  449.    ;ITabularSequenceImpl::addAllFrom(const ITabularSequenceImpl&)
  450.    addAllFrom__20ITabularSequenceImplFRC20ITabularSequenceImpl   @1037 NONAME
  451.  ;From object file:  IIAVLKSS.C
  452.   ;PUBDEFs (Symbols available from object file):
  453.    ;IAvlKeySortedSetImpl::allElementsDo(void*,void*) const
  454.    allElementsDo__20IAvlKeySortedSetImplCFPvT1   @1080 NONAME
  455.    ;IAvlKeySortedSetImpl::isFirst(const IAvlKeySortedSetImpl::Node*) const
  456.    isFirst__20IAvlKeySortedSetImplCFPCQ2_20IAvlKeySortedSetImpl4Node   @1081 NONAME
  457.    ;IAvlKeySortedSetImpl::setToPosition(unsigned long,IAvlKeySortedSetImpl::Node*&) const
  458.    setToPosition__20IAvlKeySortedSetImplCFUlRPQ2_20IAvlKeySortedSetImpl4Node   @1082 NONAME
  459.    ;IAvlKeySortedSetImpl::locateOrAddElementWithKey(const void*)
  460.    locateOrAddElementWithKey__20IAvlKeySortedSetImplFPCv   @1083 NONAME
  461.  
  462. Note:  This is only a partial listing of the actual output. 
  463.  
  464.  
  465. ΓòÉΓòÉΓòÉ 4. ------------------------------------------------------------------------------ ΓòÉΓòÉΓòÉ
  466.  
  467.  
  468. ΓòÉΓòÉΓòÉ 5. Renaming Dynamic Link Libraries with DLLRNAME ΓòÉΓòÉΓòÉ
  469.  
  470. If your application uses the dynamic link libraries (DLLs) provided with C/C++ 
  471. Tools, you would violate the C/C++ Tools licensing agreement if you shipped 
  472. your application with the C/C++ Tools library DLLs without first renaming the 
  473. DLLs. 
  474.  
  475. The DLL rename utility, dllrname, allows you to build your application using 
  476. the library DLLs provided with C/C++ Tools, and then rename the library DLLs so 
  477. they can be shipped with your application without violating the C/C++ Tools 
  478. licence agreement. 
  479.  
  480.  
  481. ΓòÉΓòÉΓòÉ 5.1. Using the DLLRNAME Utility ΓòÉΓòÉΓòÉ
  482.  
  483. To use the DLL rename utility, build your application using the import 
  484. libraries provided with C/C++ Tools.  Then, before you ship your application: 
  485.  
  486.  1. Copy the C/C++ Tools DLLs that your application uses into a working 
  487.     directory. 
  488.  
  489.  2. Run the DLL rename utility, dllrname, against your executable files and 
  490.     your working copies of the C/C++ Tools DLLs.  The utility will rename the 
  491.     DLLs as well as all internal names that need to be changed as a result. 
  492.  
  493.  
  494. ΓòÉΓòÉΓòÉ 5.2. Syntax of the DLLRNAME Utility ΓòÉΓòÉΓòÉ
  495.  
  496. The syntax for the dllrname command is: 
  497.  
  498.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  499. ΓöÇΓöÇdllrnameΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇ
  500.                  ΓööΓöÇModule-nameΓöÇΓöÿ
  501.  
  502.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  503. ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  504.       ΓööΓöÇOldname=NewnameΓöÇΓöÿ
  505.  
  506.  
  507.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  508. ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  509.       ΓööΓöÇ/OptionΓöÇΓöÿ
  510.  
  511.  
  512. ΓòÉΓòÉΓòÉ 5.2.1. Module Names ΓòÉΓòÉΓòÉ
  513.  
  514. The list of module names includes the C/C++ Tools library DLLs your application 
  515. uses, along with the EXEs and DLLs that reference them. They must be present in 
  516. the current directory, unless their paths are specified. 
  517.  
  518. Note:  It is important that you include all the modules in your application in 
  519.        this list, since the names by which the modules reference the C/C++ 
  520.        Tools library DLLs must also be changed in the modules themselves. 
  521.  
  522.  
  523. ΓòÉΓòÉΓòÉ 5.2.2. Name Changes ΓòÉΓòÉΓòÉ
  524.  
  525. You specify the list of the name changes to be made by indicating 
  526. Oldname=Newname on the dllrname command line. 
  527.  
  528. Oldname is the name of the C/C++ Tools library DLL as it was shipped from IBM*. 
  529.  
  530. Newname is the name under which you will be shipping the C/C++ Tools library 
  531. DLL with your application. 
  532.  
  533. Note:  The dllrname utility requires that Oldname and Newname have the same 
  534.        number of characters. 
  535.  
  536. For example, to rename the C/C++ Tools library DLL, DDE4SBS.DLL to MYLIBRY.DLL, 
  537. specify the following on the dllrname command line: 
  538.  
  539. DDE4SBS=MYLIBRY
  540.  
  541.  
  542. ΓòÉΓòÉΓòÉ 5.2.3. DLLRNAME Options ΓòÉΓòÉΓòÉ
  543.  
  544. The following options control the operation of the dllrname utility: 
  545.  
  546. /H or /? 
  547. /N 
  548. /Q 
  549. /R 
  550.  
  551. Note:  You can specify options using the slash form (/R) or the dash form (-R). 
  552.  
  553.  
  554. ΓòÉΓòÉΓòÉ 5.2.3.1. Help ΓòÉΓòÉΓòÉ
  555.  
  556. Specify the /H or /? option on the dllrname command line to see a short online 
  557. help on the dllrname command syntax and options. 
  558.  
  559. If you do not specify this option, the default is not to display any online 
  560. help. 
  561.  
  562.  
  563. ΓòÉΓòÉΓòÉ 5.2.3.2. Do Not Rename DLL ΓòÉΓòÉΓòÉ
  564.  
  565. Specify the /N option on the dllrname command line to instruct the dllrname 
  566. utility not to rename any DLLs that appear in both the modules list and the 
  567. list of name changes. 
  568.  
  569. If you do not specify this option, the default is to rename any DLLs that 
  570. appear in both the modules list and the list of name changes. 
  571.  
  572.  
  573. ΓòÉΓòÉΓòÉ 5.2.3.3. Do Not Display Logo ΓòÉΓòÉΓòÉ
  574.  
  575. Specify the /Q option on the dllrname command line to suppress the display of 
  576. the logo and copyright notice for the dllrname utility. 
  577.  
  578. If you do not specify this option, the default is to display the logo and 
  579. copyright notice. 
  580.  
  581.  
  582. ΓòÉΓòÉΓòÉ 5.2.3.4. Do Not Generate Report ΓòÉΓòÉΓòÉ
  583.  
  584. Specify the /R option on the dllrname command line to suppress the generation 
  585. of a report detailing the name changes. 
  586.  
  587. If you do not specify this option, the default is to generate a report 
  588. detailing the name changes. 
  589.  
  590.  
  591. ΓòÉΓòÉΓòÉ 5.3. An Example ΓòÉΓòÉΓòÉ
  592.  
  593. If you compiled your application using the following command lines: 
  594.  
  595. ICC /Gd+ /Ge- /FeA.DLL A.C B.C C.C D.C A.DEF
  596.  
  597. IMPLIB A.LIB A.DLL
  598.  
  599. ICC /Gd+ /FeE.EXE E.C F.C G.C H.C A.LIB
  600.  
  601. your application would be made up of the files A.DLL and E.EXE. Since you 
  602. specified the /Gd+ compile option, your application also requires the file 
  603. DDE4SBS.DLL from C/C++ Tools. 
  604.  
  605. To obtain a renamed copy of DDE4SBS.DLL which you may ship with your 
  606. application, use the following set of commands: 
  607.  
  608. REM Get a working copy of the C/C++ Tools library DLL
  609. COPY D:\IBMC\LIB\DDE4SBS.DLL
  610.  
  611. REM Change all the names
  612. DLLRNAME A.DLL E.EXE DDE4SBS=MYSBSLB
  613.  
  614. DLLRNAME DDE4BSBS.DLL DDE4SBS=MYSBSLB
  615.  
  616. These commands will change A.DLL and E.EXE so that they will now require 
  617. MYSBSLB.DLL instead of DDE4SBS.DLL.  dllrname will also rename DDE4SBS.DLL to 
  618. MYSBSLB.DLL. 
  619.  
  620. The following is the text of the report generated by the dllrname utility: 
  621.  
  622. > DLLRNAME A.DLL E.EXE DDE4SBS.DLL DDE4SBS=MYSBSLB
  623.  
  624. Licensed Materials - Property of IBM
  625. IBM C/C++ Tools Version 2.01 - DLL Rename Utility
  626. (C) Copyright IBM Corp., 1993, All Rights Reserved
  627. US Government Users Restricted Rights - Use, duplication or disclosure
  628. restricted by GSA ADP Schedule Contract with IBM Corp.
  629.  
  630.  
  631. Processing file A.DLL.
  632. 1 external names in file A.DLL have been left unchanged.
  633. 2 names found in file A.DLL.
  634. Executable name A has been left unchanged.
  635. Imported DLL name DDE4SBS has been changed to MYSBSLB.
  636.  
  637. Processing file E.EXE.
  638. 2 external names in file E.EXE have been left unchanged.
  639. 3 names found in file E.EXE.
  640. Executable name e has been left unchanged.
  641. Imported DLL name A has been left unchanged.
  642. Imported DLL name DDE4SBS has been changed to MYSBSLB.
  643.  
  644. Processing file dde4sbs.dll.
  645. 5 external names in file DDE4SBS.DLL have been left unchanged.
  646. 6 names found in file DDE4SBS.DLL.
  647. Executable name DDE4SBS has been changed to MYSBSLB.
  648. Imported DLL name DOSCALLS has been left unchanged.
  649. Imported DLL name KBDCALLS has been left unchanged.
  650. Imported DLL name VIOCALLS has been left unchanged.
  651. Imported DLL name NLS has been left unchanged.
  652. Imported DLL name MSG has been left unchanged.
  653. File DDE4SBS.DLL has been renamed to MYSBSLB.DLL to match internal DLL name.
  654.  
  655.  
  656. Complete.  0 error(s) detected.
  657.  
  658.  
  659. ΓòÉΓòÉΓòÉ 5.4. How DLLRNAME Works ΓòÉΓòÉΓòÉ
  660.  
  661. All modules (EXEs and DLLs) that use other DLLs contain records specifying a 
  662. set of external file names that are needed to run the module. The dllrname 
  663. utility manipulates only these records; it does not modify your executable 
  664. code. 
  665.  
  666. One of the external names specified in a module is the name of the module 
  667. itself.  The name of module, as it appears in its own internal records, is 
  668. called its internal name. You specify this name with the NAME or LIBRARY record 
  669. in a DLL module definition (.DEF) file when you link the module.  In the case 
  670. of an .EXE file, the loader essentially ignores the internal name.  For a .DLL, 
  671. its internal name must match its filename otherwise the loader will refuse to 
  672. load the DLL.  By default, dllrname will also change the filename of a DLL if 
  673. it changed its internal name. 
  674.  
  675. The rest of the external names specified in a module are the names of the DLLs 
  676. to be loaded when the OS/2* loader loads the module.  All of these DLLs must be 
  677. loaded for the OS/2 loader to successfully load the module.  If you specify any 
  678. of these required DLLs for rename on the dllrname command line, dllrname also 
  679. changes the names of the required DLLs in the module itself. 
  680.  
  681. The dllrname utility accepts 16- or 32-bit OS/2 protected mode executables.  It 
  682. will not change DOS or Windows** executables, or any other file with a 
  683. different format. 
  684.  
  685.  
  686. ΓòÉΓòÉΓòÉ 5.5. What DLLRNAME Will Not Do ΓòÉΓòÉΓòÉ
  687.  
  688. The dllrname utility will not: 
  689.  
  690. o Modify your executable code.  This is important to remember if you use the 
  691.   OS/2* API DosLoadModule() or the C/C++ Tools library call _loadmod() to load 
  692.   a required DLL.  You must modify your code to load the DLL using its modified 
  693.   name. 
  694.  
  695. o Modify DOS or Windows** executables. 
  696.  
  697. o Change the name of a DLL to a name of different length. 
  698.  
  699.  
  700. ΓòÉΓòÉΓòÉ 5.6. Other Uses for DLLRNAME ΓòÉΓòÉΓòÉ
  701.  
  702. The dllrname utility can also be used to: 
  703.  
  704. o Rename your own DLLs so that you can have multiple versions of your 
  705.   application resident on the same machine for testing purposes. 
  706.  
  707. o Obtain a report that lists all the DLLs used by a module.  Simply invoke the 
  708.   dllrname utility without specifying any DLL name changes. 
  709.  
  710.  
  711. ΓòÉΓòÉΓòÉ 6. ------------------------------------------------------------------------------ ΓòÉΓòÉΓòÉ
  712.  
  713.  
  714. ΓòÉΓòÉΓòÉ 7. Creating and Maintaining Libraries with LIB ΓòÉΓòÉΓòÉ
  715.  
  716. The IBM* Library Manager (also referred to as LIB in this reference) lets you 
  717. create and maintain libraries of object code. 
  718.  
  719. Library files are given the extension of .LIB (as in MYLIB.LIB). High 
  720. Performance File System (HPFS) files with names that end with ".LIB" (as in 
  721. MYLIBRARYFILE.NEW.LIB) are also supported. 
  722.  
  723. LIB works with standard libraries and OS/2* import libraries.  It does not work 
  724. with Dynamic Link Libraries (DLLs). 
  725.  
  726. Use the LIB utility to: 
  727.  
  728. o Create a new library 
  729. o Add, delete, or replace modules in a library 
  730. o Copy object modules in a library to object files 
  731. o List the contents of a library 
  732.  
  733.  
  734. ΓòÉΓòÉΓòÉ 7.1. Running LIB ΓòÉΓòÉΓòÉ
  735.  
  736. Run LIB by typing LIB at the operating system prompt. 
  737.  
  738. Parameters can be supplied by one of three methods: 
  739.  
  740.  1. Enter them directly on the command line. 
  741.  2. Respond to prompts. 
  742.  3. Put them in a text file called a response file and specify the file name 
  743.     after the LIB command. 
  744.  
  745. To enter more commands than can be conveniently entered on one line, type an 
  746. ampersand (&) at the end of the line and press Enter to extend the command 
  747. field to a new line. The ampersand can be used with all three input methods. 
  748.  
  749. You can press Ctrl+C or Ctrl+Break at any time during a LIB run to return to 
  750. the operating system.  Interrupting LIB before completion restores the library 
  751. from the backup. 
  752.  
  753. Note: 
  754.  
  755. o When started, LIB makes a backup copy of the original library in case it is 
  756.   interrupted or a mistake is made.  Make sure you have enough disk space for 
  757.   both your original library and the modified copy. 
  758.  
  759. o The library must end with the extension .LIB. If an extension is not 
  760.   specified, the default extension, .LIB, will be appended.  HPFS file names 
  761.   are supported. Hence, MYLIBRARYNAME.NEW.LIB is still a valid library. Note 
  762.   that this implies that MYLIBRARYNAME.NEW refers to MYLIBRARYNAME.NEW.LIB. 
  763.  
  764. o If you enter an input library name and follow it immediately with a semicolon 
  765.   (;), LIB performs a consistency check on the library and takes no other 
  766.   action. 
  767.  
  768.  
  769. ΓòÉΓòÉΓòÉ 7.1.1. Using the Command Line ΓòÉΓòÉΓòÉ
  770.  
  771. You can specify all the input LIB needs on the command line. The syntax of the 
  772. command line is: 
  773.  
  774. LIB [options] inlibrary [commands] [[,listfile] [, outlibrary]] [;]
  775.  
  776. inlibrary        The input library to be modified. 
  777.  
  778. options          Options that affect the way LIB runs. 
  779.  
  780. commands         Commands used to add, delete, replace, copy, and move modules 
  781.                  within the library. 
  782.  
  783. listfile         The name for a listing file. If you don't specify a name, no 
  784.                  file is created. 
  785.  
  786. outlibrary       The output library created from the input library. If you 
  787.                  don't specify an output library, your input library is 
  788.                  replaced with the modified version (see below). 
  789.  
  790. Commas are used to separate commands and options. The semicolon (;) is used to 
  791. mark the end of the command line. 
  792.  
  793.  
  794. ΓòÉΓòÉΓòÉ 7.1.2. Using LIB Prompts ΓòÉΓòÉΓòÉ
  795.  
  796. If you don't provide input to LIB on the command line, LIB prompts you for the 
  797. information it needs by displaying the following messages, one at a time: 
  798.  
  799. Prompt             Enter 
  800.  
  801. Library name       Name of the input library to be modified. 
  802.  
  803. Operations         Commands to modify the library.  If no operations are 
  804.                    specified, the input library is unchanged. 
  805.  
  806. List file          Name for a listing file If no listing file is specified, no 
  807.                    listing file is created. 
  808.  
  809. Output library     Name of the output library to be created from the input 
  810.                    library. If no output library is specified, LIB modifies the 
  811.                    input library. 
  812.  
  813. Enter the same information that you would enter when using the LIB command 
  814. line. 
  815.  
  816. Notes 
  817.  
  818. o LIB waits for you to respond to each prompt before displaying the next 
  819.   prompt. If you notice that you have entered an incorrect response to a 
  820.   previous prompt, press Ctrl+C or Ctrl+Break to exit LIB and begin again. 
  821.  
  822. o A file name must be entered at the Library name: prompt.  To choose a default 
  823.   response for any of the other prompts, press Enter. To choose default 
  824.   responses for all remaining prompts, type a semicolon (;) and press Enter. 
  825.  
  826.  
  827. ΓòÉΓòÉΓòÉ 7.1.3. Using a LIB Response File ΓòÉΓòÉΓòÉ
  828.  
  829. To provide input to LIB with a response file, type: 
  830.  
  831. LIB @responsefile;
  832.  
  833. The field responsefile is the name of a file containing the same information 
  834. that can be specified on the command line. 
  835.  
  836. In a sense, a response file extends the command line to include everything in 
  837. the response file. To split input to LIB between the command line and a 
  838. response file, put part of your input on the command line and specify a 
  839. response file (preceding the response file name with the at sign (@)). The 
  840. response file name can be any valid OS/2* file. To use special characters such 
  841. as a space or the @ symbol, the filename must be enclosed in quotes. 
  842.  
  843. LIB responds to input you place in a response file just as it does to input you 
  844. enter on a command line or after a prompt. Using a newline character in the 
  845. response file is the equivalent of pressing the Enter key after a LIB prompt. 
  846.  
  847. A response file uses one text line for each prompt. To extend a LIB command to 
  848. multiple lines, end each line except the last with an ampersand (&).  Responses 
  849. must appear in the same order as the prompts.  If a response for one of the 
  850. prompts does not appear, the default is used. 
  851.  
  852. Use a response file for: 
  853.  
  854. o Complex and long commands you type frequently 
  855.  
  856. o Strings of commands that exceed the limit for command line length. 
  857.  
  858.  
  859. ΓòÉΓòÉΓòÉ <hidden> Specifying LIB Parameters - Examples ΓòÉΓòÉΓòÉ
  860.  
  861. This panel shows you examples of each method for specifying parameters to LIB. 
  862.  
  863. The operations shown in each example create a new library, NEWLIB.LIB, and its 
  864. listing file, NEWLIB.LST, from the existing MYLIB.LIB library.  MYLIB.LIB is 
  865. unchanged, but NEWLIB.LIB has these changes: 
  866.  
  867. o The contents are case-insensitive. 
  868. o The module TIM is deleted. 
  869. o The object file SIMON.OBJ is appended as an object module with the name 
  870.   SIMON. 
  871. o The existing module KEHM is deleted and is replaced by a new KEHM which is 
  872.   appended after SIMON. 
  873. o The module LAM is copied into an object file named LAM.OBJ. 
  874.  
  875. Command Line Method 
  876.  
  877. At the operating system prompt, enter the following two lines. 
  878.  
  879. LIB /I MYLIB, SIMON-TIM-+KEHM &
  880. *LAM, NEWLIB.LST, NEWLIB;
  881.  
  882. LIB Prompts Method 
  883.  
  884. To have LIB prompt you for input, enter LIB with no parameters. 
  885.  
  886. Library name: /I MYLIB
  887. Operations: +SIMON-TIM-+KEHM &
  888. Operations: *LAM
  889. List file: NEWLIB.LST
  890. Output library: NEWLIB
  891.  
  892. Response File Method 
  893.  
  894. First, create a response file with the following contents. 
  895.  
  896. /I MYLIB
  897. +SIMON-TIM-+KEHM &
  898. *LAM
  899. NEWLIB.LST
  900. NEWLIB
  901.  
  902. Then, assuming the name of the response file is response.fil, invoke LIB with: 
  903.  
  904. LIB @RESPONSE.FIL;
  905.  
  906. Note that the lines in the response file match the entries you would have made 
  907. with the prompting method.  Even the ampersand character (&), the continuation 
  908. character, is used in the same way. 
  909.  
  910.  
  911. ΓòÉΓòÉΓòÉ 7.2. Creating a New Library ΓòÉΓòÉΓòÉ
  912.  
  913. To create a new library file, specify the name of the library file you want to 
  914. create on the command line (or at the Library name: prompt when using LIB 
  915. prompts). 
  916.  
  917. Note:  A library file is automatically created if the library file name you 
  918. specify is immediately followed by a command, comma, or semicolon. In this 
  919. case, the prompt does not appear. 
  920.  
  921. If the name you specify for the new library file already exists, LIB assumes 
  922. that you want to modify the existing file. 
  923.  
  924. When you give the name of a file that does not currently exist, LIB displays 
  925. the following prompt: 
  926.  
  927. Library does not exist.  Create library? (y or n) 
  928.  
  929. Type y to create the file; type n to terminate the LIB run. If you specified an 
  930. extension other than .LIB, the LIB utility will try to append the .LIB 
  931. extension to the entire file name. If a library name is not entered, LIB will 
  932. prompt you for a library name. 
  933.  
  934.  
  935. ΓòÉΓòÉΓòÉ 7.3. Modifying a Library ΓòÉΓòÉΓòÉ
  936.  
  937. You can use LIB to alter the contents of any object code library.  For example, 
  938. if you work with high level language libraries, you may want to replace a 
  939. standard routine with your own version of the routine. You may also want to add 
  940. a new routine to the standard library so that your routine is available along 
  941. with the standard routines. 
  942.  
  943. To modify an existing library file, specify the name of the library file you 
  944. want to modify on the LIB command line (or at the Library name: prompt when 
  945. using LIB prompts). 
  946.  
  947. In the command field, enter one or more commands to add, delete, or replace 
  948. modules in the input library. Each command consists of a command character 
  949. immediately followed by the name of the module or object file. Note that the 
  950. Add command can be used to combine libraries as well as to add object files to 
  951. a library. 
  952.  
  953. LIB creates a backup file of the library being modified if it already exists. 
  954. This backup file has the same name as the original library with a .BAK filename 
  955. extension. 
  956.  
  957. Related information: 
  958.  
  959. o Add command (+) 
  960. o Delete command (-) 
  961. o Replace command (-+) 
  962.  
  963.  
  964. ΓòÉΓòÉΓòÉ 7.4. Copying Object Modules to Object Files ΓòÉΓòÉΓòÉ
  965.  
  966. To copy a module from a library file to an object file, specify the name of the 
  967. library file on the LIB command line (or at the Library name: prompt when using 
  968. LIB prompts). 
  969.  
  970. The command field on the command line allows you to move or copy modules. 
  971.  
  972. Command   Action 
  973.  
  974. Copy (*)  Copy the module to an object file and retain the module in the 
  975.           library. 
  976.  
  977. Move (-*) Copy the module to an object file and delete the module from the 
  978.           library. 
  979.  
  980.  
  981. ΓòÉΓòÉΓòÉ 7.5. LIB Listings ΓòÉΓòÉΓòÉ
  982.  
  983. Listings give you the exact names of modules and public symbols, allowing you 
  984. to inspect the contents within a library. 
  985.  
  986. To generate a listing file, enter the following on the command line (or at the 
  987. appropriate LIB prompt): 
  988.  
  989. o The name of the library file in the inlibrary field 
  990.  
  991. o The name of the listing file in the listfile field 
  992.  
  993. When generating a listing file, the amount of detail can be varied. The level 
  994. of detail is specified with the 
  995.  
  996.      /Listlevel:n
  997.  
  998. option, with three different levels being available. 
  999.  
  1000. Level 1 is the default.  It is the fastest to generate and contains the least 
  1001. amount of information. All modules are listed in order of occurrence. For each 
  1002. module, the level 1 option: 
  1003.  
  1004.  1. Shows the relative position and size of each module. 
  1005.  
  1006.  2. Lists all the public symbols defined in the module. 
  1007.  
  1008.  3. Lists all external symbols which must be resolved at link time. 
  1009.  
  1010. Level 2 contains all the information of level 1. In addition, for each external 
  1011. symbol, level 2 shows which module in the library contains the required public 
  1012. symbols for resolving at link time. This can be overridden if a module is 
  1013. linked to another module that already contains the symbol. 
  1014.  
  1015. Level 3 contains all the information of level 2. In addition, Level 3 displays 
  1016. the technical characteristics of the library. This option also contains a dump 
  1017. of the extended dictionary. This is useful to determine which modules will be 
  1018. implicitly linked in whenever a particular module is linked in. 
  1019.  
  1020. Note:  If you are using the IBM* C/C++ Tools product, definitions with mangled 
  1021.        names will be listed with the demangled form in brackets. 
  1022.  
  1023. Sample Cross Reference Listing 
  1024.  
  1025. LIB /LISTLEVEL:2 NEWLIB, NEWLIB.LST;
  1026.  
  1027. The command above directs LIB to place a listing of the contents of NEWLIB.LIB 
  1028. into the file NEWLIB.LST.  No path specification is given for NEWLIB.LST.  By 
  1029. default, the file created is put in the current directory. 
  1030.  
  1031.  
  1032. ΓòÉΓòÉΓòÉ <hidden> Listing Example ΓòÉΓòÉΓòÉ
  1033.  
  1034. The syntax for generating a level 3 listing file is: 
  1035.  
  1036. LIB /L:3 NEWLIB, NEWLIB.LST;
  1037.  
  1038. This command generates the a listing file called NEWLIB.LST containing the 
  1039. following text: 
  1040.  
  1041. IBM (R) Library Manager Version 2.00
  1042. Copyright (C) IBM Corporation 1991, 1992.  All rights reserved.
  1043.  
  1044. Library name : D:\TEMP\NEWLIB.LIB
  1045.  
  1046. Listing detail level : 3
  1047.  
  1048.  
  1049.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1050.   ΓöîΓöÇΓöñNumber of the module within the parent library. TheΓöé
  1051.   Γöé Γöéfirst module number in the listing file is 00000.  Γöé
  1052.   Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1053.   Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1054.   Γöé   ΓöéName of the module within the library.Γöé
  1055.   Γöé   ΓööΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1056.         
  1057. 00000:francis(OFFSET:0x00000010, SIZE:0x000004ca):
  1058.                                         
  1059.                          Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1060.                          Γöé   ΓöéSize (in bytes) of the object module.Γöé
  1061.                          Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1062.                 ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1063.                 ΓöéRelative offset (in bytes) of the module within the library.Γöé
  1064.                 ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1065.                         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1066.  - Public Definitions:ΓöÇΓöñSymbols defined by the module.  Γöé
  1067.      francis            ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1068.  
  1069.                              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1070.                              ΓöéSymbols defined in a differentΓöé
  1071.  - External Definitions:ΓöÇΓöÇΓöÇΓöÇΓöñmodule within the library.    Γöé
  1072.      DosAllocMem             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1073.      _ilog2
  1074.      _critlib_except
  1075.      _DosSelToFlat
  1076.      _DosFlatToSel
  1077.  
  1078.  
  1079. 00001:lam (OFFSET:0x000004e0, SIZE:0x000001d1):
  1080.  - Public Definitions:
  1081.      lam
  1082.  
  1083.  - External Definitions:
  1084.      francis                            <- 00000:francisΓöÇΓöÇΓöÇΓöÇΓöÉ
  1085.      _critlib_except                                         Γöé
  1086.      _DosSelToFlat       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1087.      _DosFlatToSel       ΓöéNumber and name of the module within the libraryΓöé
  1088.                          Γöéthat defines the corresponding public symbol.   Γöé
  1089.                          ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1090.  
  1091. 00002:hazlett (OFFSET:0x000006c0, SIZE:0x0000021a):
  1092.  - Public Definitions:
  1093.      hazlett
  1094.  
  1095.  - External Definitions:
  1096.      DosFreeMem
  1097.      _critlib_except
  1098.      _DosSelToFlat
  1099.      _DosFlatToSel
  1100.      _pBucketArr
  1101.  
  1102.  
  1103. 00003:simon (OFFSET:0x000008e0, SIZE:0x00000428):
  1104.  - Public Definitions:
  1105.      simon
  1106.  
  1107.  - External Definitions:
  1108.      _ilog2
  1109.      hazlett                            <- 00002:hazlett
  1110.      francis                            <- 00000:francis
  1111.      _critlib_except
  1112.      _DosSelToFlat
  1113.      _DosFlatToSel
  1114.      _pBucketArr
  1115.  
  1116.  
  1117. 00004:kehm (OFFSET:0x00000d10, SIZE:0x00000342):
  1118.  - Public Definitions:
  1119.      _kehm
  1120.  
  1121.  - External Definitions:
  1122.      DosFreeMem
  1123.      _critlib_except
  1124.      _DosSelToFlat
  1125.      _DosFlatToSel
  1126.      _pBucketArr
  1127.  
  1128. The following information describes the characteristics of the library. 
  1129.  
  1130. Page size = 16
  1131.  
  1132. The Flags field determines case sensitivity. 0x1 indicates case sensitivity. 
  1133. 0x0 indicates no case sensitivity. 
  1134.  
  1135. Flags = 0x0
  1136.  
  1137. Contains extended dictionary
  1138.  
  1139. Total number of modules = 5
  1140.  
  1141. Total bytes for modules = 4592
  1142.  
  1143. Total number of symbols in dictionary = 10
  1144.  
  1145. Maximum number of symbols in dictionary = 74
  1146.  
  1147. Total number of pages for the dictionary = 2
  1148.  
  1149. The following is the extended dictionary information. The number in parentheses 
  1150. indicates the number of dependencies. It is followed by the list of modules 
  1151.  
  1152. In this case, modules 0, 2, and 4 have no dependencies, module 1 is dependent 
  1153. on module 0, and module 3 is dependent on modules 0 and 2. 
  1154.  
  1155. ======== Dependencies by Module ========
  1156. Module 00000 : (00000)
  1157. Module 00001 : (00001) 00000
  1158. Module 00002 : (00000)
  1159. Module 00003 : (00002) 00000 00002
  1160. Module 00004 : (00000)
  1161.  
  1162.  
  1163. ΓòÉΓòÉΓòÉ 7.6. LIB Commands ΓòÉΓòÉΓòÉ
  1164.  
  1165. LIB commands are used to manipulate modules in a library.  A single LIB run can 
  1166. use multiple commands in any order. 
  1167.  
  1168. Each command consists of a one- or two-character command symbol immediately 
  1169. followed by the name of the module or file that is the subject of the command. 
  1170. For example, 
  1171.  
  1172. +EFREM.OBJ
  1173.  
  1174. adds the EFREM.OBJ object file to a library as EFREM. 
  1175.  
  1176. Command     Action 
  1177.  
  1178. [+]       Adds an object file or library to a library 
  1179.  
  1180. -         Deletes a module from a library 
  1181.  
  1182. -+        Replaces a module in a library 
  1183.  
  1184. *         Copies a module from a library to an object file 
  1185.  
  1186. -*        Moves a module (copies the module and then deletes it) 
  1187.  
  1188. Notes 
  1189.  
  1190. o If you want to enter more commands than can be conveniently entered on one 
  1191.   line, type an ampersand (&) and press Enter at the end of the line.  This 
  1192.   extends the command field to the next line. 
  1193.  
  1194. o When processing commands, LIB processes all copy commands first. LIB 
  1195.   processes the deletions next, and the additions last. 
  1196.  
  1197. o LIB never makes changes to your input library while it runs; it copies the 
  1198.   library and makes changes to the copy. However, if you do not specify an 
  1199.   output library, LIB overwrites the input library with the modified copy at 
  1200.   the end of normal processing. See Using the LIB Command Line for more 
  1201.   information. 
  1202.  
  1203.  
  1204. ΓòÉΓòÉΓòÉ 7.6.1. Add Command (+) ΓòÉΓòÉΓòÉ
  1205.  
  1206. Use the add command to add an object module or library to a library. The add 
  1207. command is issued by using the plus (+) sign or by leaving a blank space. 
  1208.  
  1209. Adding an Object Module to a Library 
  1210.  
  1211. Type the name of the object file to be added immediately after the plus sign. 
  1212. The .OBJ extension may be omitted. 
  1213.  
  1214. LIB uses the base name of the object file as the name of the object module in 
  1215. the library.  For example, if the object file B:\CURSOR.OBJ is added to a 
  1216. library file, the name of the corresponding object module is CURSOR. 
  1217.  
  1218. Object modules are always added to the end of a library file. 
  1219.  
  1220. Combining Two Libraries 
  1221.  
  1222. Specify the name of the library file to be added, including the .LIB extension, 
  1223. immediately after the plus sign (+).  A copy of the contents of that library is 
  1224. added to the library file being modified.  If both libraries contain a module 
  1225. with the same name, LIB ignores the second module with that name. 
  1226.  
  1227. LIB adds the modules of the library to the end of the library being changed. 
  1228. Note that the added library still exists as an independent library because LIB 
  1229. copies the modules without deleting them. 
  1230.  
  1231. Examples 
  1232.  
  1233. LIB MYLIB +EFREM;
  1234.  
  1235. The command above adds the file EFREM.OBJ to the library MYLIB.LIB. 
  1236.  
  1237. LIB NEWLIB +KAREN.LIB;
  1238.  
  1239. The command above adds the contents of the library KAREN.LIB to the library 
  1240. NEWLIB.LIB.  The library KAREN.LIB is unchanged after this command is executed. 
  1241.  
  1242.  
  1243. ΓòÉΓòÉΓòÉ 7.6.2. Delete Command (-) ΓòÉΓòÉΓòÉ
  1244.  
  1245. Use the delete command (-) to delete an object module from a library. After the 
  1246. minus sign, specify the name of the module to be deleted. Module names do not 
  1247. have path names or extensions. 
  1248.  
  1249. Example 
  1250.  
  1251. LIB MYLIB -EFREM;
  1252.  
  1253. The command above deletes the module EFREM from the library MYLIB.LIB. 
  1254.  
  1255.  
  1256. ΓòÉΓòÉΓòÉ 7.6.3. Replace Command (-+) ΓòÉΓòÉΓòÉ
  1257.  
  1258. Use the replace command (-+) to replace a module in a library.  Following the 
  1259. symbol, specify the name of the module to be replaced. 
  1260.  
  1261. To replace a module, LIB performs the following steps: 
  1262.  
  1263.  1. Deletes the existing module 
  1264.  
  1265.  2. Searches the current directory for the .OBJ file with the same file name as 
  1266.     the deleted module 
  1267.  
  1268.  3. Appends to the library a copy of the object file with the original module 
  1269.     name 
  1270.  
  1271. Example 
  1272.  
  1273. LIB MYLIB -+EFREM;
  1274.  
  1275. The command above replaces the module EFREM in the MYLIB.LIB library with the 
  1276. contents of EFREM.OBJ from the current directory.  The file EFREM.OBJ in the 
  1277. current directory is not altered. 
  1278.  
  1279.  
  1280. ΓòÉΓòÉΓòÉ 7.6.4. Copy Command (*) ΓòÉΓòÉΓòÉ
  1281.  
  1282. Use the copy command (*) to copy a module from the library into an object file 
  1283. of the same name. The module remains in the library. 
  1284.  
  1285. When LIB copies the module to an object file, it adds the .OBJ extension to the 
  1286. module name and places the file in the current directory. If a file with this 
  1287. name already exists, LIB overwrites the existing .OBJ file. 
  1288.  
  1289. Example 
  1290.  
  1291. LIB MYLIB *EFREM;
  1292.  
  1293. The command above copies the module EFREM from the MYLIB.LIB library to a file 
  1294. called EFREM.OBJ in the current directory. The module EFREM in MYLIB.LIB is not 
  1295. altered. 
  1296.  
  1297.  
  1298. ΓòÉΓòÉΓòÉ 7.6.5. Move Command (-*) ΓòÉΓòÉΓòÉ
  1299.  
  1300. Use the move command (-*) to copy an object module from the library file to an 
  1301. object file. The object module is then deleted from the library file.  This 
  1302. operation is equivalent to copying the module to an object file, then deleting 
  1303. the module from the library. 
  1304.  
  1305. Example 
  1306.  
  1307. LIB MYLIB -*KEELING;
  1308.  
  1309. The command above moves the module KEELING from the MYLIB.LIB library to a file 
  1310. called KEELING.OBJ in the current directory. Upon completion of this process, 
  1311. MYLIB.LIB no longer contains the module KEELING. 
  1312.  
  1313.  
  1314. ΓòÉΓòÉΓòÉ 7.7. Options ΓòÉΓòÉΓòÉ
  1315.  
  1316. Usage Notes: 
  1317.  
  1318. o Option characters are not case sensitive; /H and /h are equivalent. 
  1319. o The characters in brackets can be omitted; /H and /HELP are equivalent. 
  1320. o Unless otherwise specified, most options and commands need only the first 
  1321.   letter of their names to be used. 
  1322.  
  1323. The following is a summary of LIB options: 
  1324.  
  1325. Option                  Action 
  1326.  
  1327. /? or ? or /H[ELP]      Display Help 
  1328.  
  1329. /I[GNORECASE]           Turn case sensitivity off 
  1330.  
  1331. /NOE[XTDICTIONARY]      Disable generation of extended dictionary 
  1332.  
  1333. /NOI[GNORECASE]         Turn case sensitivity on 
  1334.  
  1335. /NOL[OGO]               Suppress LIB banner 
  1336.  
  1337. /Q[UIET]                Suppress LIB banner 
  1338.  
  1339. /P[AGESIZE]             Set library page size 
  1340.  
  1341. /L[ISTLEVEL]            List current contents of library 
  1342.  
  1343.  
  1344. ΓòÉΓòÉΓòÉ 7.7.1. Turn Case Sensitivity Off ΓòÉΓòÉΓòÉ
  1345.  
  1346. Turn Case Sensitivity Off (/I) 
  1347.  
  1348. Syntax:  /I[GNORECASE] 
  1349.  
  1350. Purpose:  Turns off case sensitivity for symbols 
  1351.  
  1352. By default, case sensitivity is off. Use this option when you are combining a 
  1353. library that was created with  case sensitivity on (using the /NOI option) with 
  1354. others that are not case sensitive.  The resulting library is not case 
  1355. sensitive. 
  1356.  
  1357.  
  1358. ΓòÉΓòÉΓòÉ 7.7.2. Turn Case Sensitivity On ΓòÉΓòÉΓòÉ
  1359.  
  1360. Turn Case Sensitivity On (/NOI) 
  1361.  
  1362. Syntax:  /NOI[GNORECASE] 
  1363.  
  1364. Purpose:  Turns on case sensitivity 
  1365.  
  1366. By default, case sensitivity is off (/I option). Using this option allows 
  1367. symbols that differ only in case, such as Sine and SINE, to be included as 
  1368. separate symbols in the same library. 
  1369.  
  1370. Note that when you create a library with the /NOI option, LIB marks the library 
  1371. internally to indicate that /NOI is in effect.  If you combine multiple 
  1372. libraries, and any one of them is marked /NOI, then the output library is 
  1373. marked /NOI. 
  1374.  
  1375.  
  1376. ΓòÉΓòÉΓòÉ 7.7.3. Do Not Generate Extended Dictionary ΓòÉΓòÉΓòÉ
  1377.  
  1378. /NOE Option 
  1379.  
  1380. Disable Generation of Extended Dictionary (/NOE) 
  1381.  
  1382. Syntax:  /NOE[XTDICTIONARY] 
  1383.  
  1384. Purpose: Disables generation of extended dictionary 
  1385.  
  1386. The extended dictionary is an optional part of the library that increases 
  1387. linking speed. However, using an extended dictionary requires more memory.  The 
  1388. space reserved for the extended dictionary is limited to 64K, no more can be 
  1389. allocated. If LIB reports an out-of-memory error, you may want to use this 
  1390. option. As an alternative, you can split large libraries into smaller libraries 
  1391. to use in linking. 
  1392.  
  1393.  
  1394. ΓòÉΓòÉΓòÉ 7.7.4. Set Library Page Size ΓòÉΓòÉΓòÉ
  1395.  
  1396. Set Library Page Size (/P) 
  1397.  
  1398. Syntax:  /P[AGESIZE]: n 
  1399.  
  1400. Purpose:  Sets library page size 
  1401.  
  1402. This option specifies the library page size of a new library or changes that of 
  1403. an existing library. The new page size n must be an integer value representing 
  1404. a power of 2 between the values 16 and 32,768. 
  1405.  
  1406. A library's page size affects the alignment of modules stored in the library. 
  1407. Modules are always aligned to start at a position that is a multiple of the 
  1408. page size (in bytes) from the beginning of the file. The default page size for 
  1409. a new library is 16 bytes. For an existing library, the default is its current 
  1410. page size. 
  1411.  
  1412. Because of LIB's indexing technique, the larger the page size, the more modules 
  1413. a library can hold. Each module requires an average of n/2 bytes of storage 
  1414. space. Therefore, you should use a small page size unless you need to put a 
  1415. very large number of modules in a library. 
  1416.  
  1417. Another consequence of LIB's indexing technique is that the page size limits 
  1418. the size of the library file to n * 65,536. For example, the option /P:16 
  1419. limits the size to 1 megabyte (16 * 65,536 bytes). 
  1420.  
  1421.  
  1422. ΓòÉΓòÉΓòÉ 7.7.5. Display Help ΓòÉΓòÉΓòÉ
  1423.  
  1424. Display Help 
  1425.  
  1426. Syntax:   /H[ELP] 
  1427.           or 
  1428.           /? 
  1429.           or 
  1430.           ? 
  1431.  
  1432. Purpose:  Displays help on LIB 
  1433.  
  1434. A brief summary of LIB syntax is displayed. 
  1435.  
  1436.  
  1437. ΓòÉΓòÉΓòÉ 7.7.6. Supress Banner ΓòÉΓòÉΓòÉ
  1438.  
  1439. Suppress LIB Banner 
  1440.  
  1441. Syntax:  /NOL[OGO] or /Q[UIET] 
  1442.  
  1443. Purpose:  Suppresses the LIB copyright notice. 
  1444.  
  1445. This option suppresses the banner message when LIB is started. It can be used 
  1446. in batch files. 
  1447.  
  1448.  
  1449. ΓòÉΓòÉΓòÉ <hidden> Library ΓòÉΓòÉΓòÉ
  1450.  
  1451. A library is an organized collection of object code which contains functions 
  1452. and data that are already assembled or compiled.  Once an object file is 
  1453. incorporated into a library, it becomes an object module. 
  1454.  
  1455. Libraries are used to: 
  1456.  
  1457. o Support high level languages. Most compilers include libraries to perform 
  1458.   standard operations, such as input/output and floating-point mathematics. 
  1459.  
  1460.   When your program refers to a library routine, the compiler and linker 
  1461.   combine the library routine with your program. 
  1462.  
  1463. o Perform complex and specialized activities, such as database management or 
  1464.   advanced graphics.  You can use your own libraries or specialized libraries 
  1465.   supplied by a vendor. 
  1466.  
  1467. o Support your own work.  If you have created routines that you use with a 
  1468.   variety of programs, you may want to consolidate these routines into a 
  1469.   library.  You can then link to one library. 
  1470.  
  1471.  
  1472. ΓòÉΓòÉΓòÉ <hidden> Output Library ΓòÉΓòÉΓòÉ
  1473.  
  1474. If you specify a file in outlibrary, LIB creates a new output file with the 
  1475. modifications and leaves your input file intact.  Otherwise, LIB replaces your 
  1476. input file with the modified file.  In the latter case, a backup of your 
  1477. original input file is stored in the current directory with the file name 
  1478. extension .BAK. 
  1479.  
  1480.  
  1481. ΓòÉΓòÉΓòÉ <hidden> Object File ΓòÉΓòÉΓòÉ
  1482.  
  1483. An object file is produced by a compiler or assembler from one or more source 
  1484. files.  An object file has an extension of .OBJ (as in MYPROJ.OBJ).  LIB also 
  1485. supports HPFS file names that end with ".OBJ" (as in MYOBJECTFILE.NEW.OBJ). 
  1486.  
  1487.  
  1488. ΓòÉΓòÉΓòÉ <hidden> Object Module ΓòÉΓòÉΓòÉ
  1489.  
  1490. An object module is a self-contained unit within a library of precompiled or 
  1491. preassembled routines.  When individual object files are combined into a single 
  1492. library file, they become object modules. 
  1493.  
  1494. In LIB, an object module is referred to by its name, without a file extension. 
  1495. For example, assume that the object file KEELING.OBJ is inserted into a 
  1496. library.  It then becomes an object module and is simply referred to as 
  1497. KEELING. 
  1498.  
  1499.  
  1500. ΓòÉΓòÉΓòÉ 8. ------------------------------------------------------------------------------ ΓòÉΓòÉΓòÉ
  1501.  
  1502.  
  1503. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1504.  
  1505. Trademark of the IBM Corporation 
  1506.  
  1507.  
  1508. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1509.  
  1510. Dynamic Link Library 
  1511.  
  1512.  
  1513. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1514.  
  1515. Trademark of the Microsoft Corporation