
  .   .  "OS/2 "                            1 4




 * ᪠ 
 *  ᪮ 
 * ᪠   ६ 㧪
 * 䨭⨢ 䠩 (.def-䠩)  楤 IMPLIB
 * ᪠   ६ 믮
 *      ⥪ ᪮ 
 * 楤 樠樨  ⥪ ᪮ 



        ⫨⥫    ᢮⢠  OS/2   ப    ,
ਬ: ⨥ ࠭祭   ࠧ ᯮ㥬    640  ,
,  ᮢ  ⢨.   㣨,  ⨢,   
  -  ,    ⮩   稭,      ᫨誮   
.   ⥫  ᮡ ⬥             
             ,        ᢮⢮    稬
ࠢ  ᥬ  ⮬  ⠫쭮,    ਭ樯쭮  ⫨砥  OS/2 
। 樮  ⥬. ᪠   ணࠬ
न쭮    ᥩ  ⥬    ᪮- 쥧
ਫ, ᠭ  OS/2.

       饭  ᠭ    룮,   ।⠢
᪠ .     ',      ணࠬ,
ᯮ騥  .

        ᫮,   ᪠       뢠
ਪ  ணࠬ     묨   楤ࠬ       ६
樨,    ६  㧪   믮.   ⥬  
 ᫮   ࠢ  ᬮ७묨  ࠭.    , 
᪮   㢨,         㫨,  ॠ騥   
᪮ , ᮢᥬ 㤭. 뢠,  
몠      ⮣    ,    ਬ  ᥬ  
饬    設⢥    砥      室.   ,
   ਬ,  ஬ ᯮ ⥭쪠  ᥬୠ
ணࠬ, ।⠢ ⥫ 㤮⢠.


                             .         
     ----------------------------------------------------------------


    ०,  祬      ,   ᬮਬ,     ⢫
  ணࠬ     ࠤ樮   ணࠬ  樮
⥬.


                               ' 㫨
                               ----------------

      設⢥   ⥬,     MS-DOS    OS/2,  
ᥬ    ᮧ  믮  ணࠬ  䠩. ⮬ 
ࠡ    ஬  '  (.OBJ) .  
    ᪮  (।஢)    㣨  '묨, 
⠪   묨  (.LIB)   ﬨ,  ⮡    ⮣   稫
    業 믮  .EXE-䠩.   ᯮ짮   ஬
'   䠩 ਤ  ⥫    ᮧ
ணࠬ.  ᫨   ணࠬ  砥     ᥡ   ᪮쪮   室
㫥,     ,  㣨  㫨  室
࠭᫨஢. 㦭     ⪮஢ ⮫쪮   
,      ।஢  '  㫨.    ᮧ
᫮ ணࠬ ⥬   ⥫쭮 ६.


                               䠩
                              ------------------

          ⠪      㫨.
⥪  -     ᮢ㯭  '  㫥, ᯮ㥬 
  ணࠬ.      ,    ࠢ, ॠ
楤  /뢮.    㭪樨  ஬筮
    㭪ﬨ,  ஥묨    樮  ⥬, 
ࠧࠡ뢠묨  ᯥ樠쭮   ⭮  ਫ.  ணࠬ,
⠪ ࠧ,  몠 ।⢥   ।⢠  
ਮ⠥  ᢮⢮ 쭮  (७ᨬ).  ਬ, ᫨  
⥬  砥      ਭ,  室      
⥪,  ᮤঠ  㫨  ࠢ   ਭ஬,      ᠬ
ணࠬ ᯥ祭, ᯮ饥 ਭ  ࠡ.


                            ᪠ 
                            ----------------------

     ࠤ樮  樮 ⥬  ப஢,  ⠪
   MS  DOS,    㫥   ᥣ  ந  ।   
믮. 室騥   ணࠬ  室 㫨   
ᥬ,   祭   '   㫨    ।,  
祭  믮 䠩  ࠭  쭥襣   ਬ.
 䠩   祭 ᠬ⥫쭮 楩, 饩
     믮      㭪, ஥  樮
⥬,   祭   㤮. ᠭ 奬   ࠧࠡ⪨
ணࠬ ਢ  㭪 14-1.


                       
     Ŀ        Ŀ
        XXX.C              YYY.C   
             
                     
               '                       
                                              ZZZ.LIB
     Ŀ        Ŀ       Ŀ
       XXX.OBJ            YYY.OBJ             Ŀ    
                           func1       
                                                    
                                                Ŀ    
                               func2       
                                                     
                       ஢        
                      
           Ŀ
               Ŀ    
                   XXX        
                   
               Ŀ    
                   YYY          
                       
               Ŀ           
                 func.1       
                   
               Ŀ    
                 func.2       
                   
           
                   XXX.EXE


                        14-1. ᪠ 


       ணࠬ      ⠯    樨     
᪮   .       ᪠         
 ࠧ쭮 ࠭樨  㫥  祭  
楤,   ᢮ ⪨.

      ஡    ,     ᫥  ।஢   
祭  믮  䠩      祣        
୮    ।஢.       ਬ,   ᫨      ⥬
砥    ਭ,    ணࠬ    ᮤন 
楤,  ࠢ,  室    , 
  ணࠬ   '  㫨       ⥪.    ᮧ
㤮⢠  ࠧࠡ稪   ணࠬ  ᯥ祭,  㦤
    ⥫  ணࠬ    ࠡ  ࠧ   ᪮쪨
⨯  ਭ஢  (    ࠢ  让),   ᪠
᪮쪮 ᨩ ணࠬ.

     ⥬  ⨯ணࠬ஢  ᪮    
  ⮪.  믮 , ᯮ騩  
 楤,   ᮤঠ   ⤥  ,   
᫨    ६   室 㣨  ணࠬ, 騥 
⮩  楤.        ᯮᮡ ᮢ⭮  ᯮ짮
饣    ࠧ묨  ᠬ.    ਢ   㦭 
  ᭨ ந⥫쭮 ⥬.


                           ᪠ 
                           -----------------------

    ᪠     ࠧ蠥    ஡  :     
    䠩 ᨬ   ணࠬ, 
⠪  ᯮ짮            㭪樨 ࠧ묨
ணࠬ.

    ᪮   ਪ ணࠬ  ᮤন  
  楤.        室     ⤥쭮  䠩,
뢠                                  
               (),  ᪨   DLL (Dynamic Link
Library). ⥬     ᥡ 㧪  ᮮ⢥饩 , 
   室,    ⠭   痢        맢襩  
ਪ ணࠬ.  㭪 14-2   .


     Ŀ        Ŀ                 Ŀ
        XXX.C              YYY.C                       DYN.C   
                              
                                        
     Ŀ        Ŀ                 Ŀ
       XXX.OBJ            YYY.OBJ                     DYN.OBJ  
                              
                                        
                      ஢                         ஢
           Ŀ                 Ŀ
               Ŀ                         Ŀ    
                   XXX          맮 㭪権        func1       
                   -----------------        
               Ŀ          ६        Ŀ    
                   YYY            믮          func2       
                                            
                            
                   XXX.EXE                                 DYN.DLL


                       14-2. ᪠ 


       ᪮   :  ६ 㧪  
  ६  믮.    ࢮ   砥  믮   䠩 ᮤন
뫪    ᯮ㥬  㭪樨    .  ਪ ணࠬ
뢠    ,  ⥬  ।  稥  ⠪   뫮,
㦠  ॡ㥬    楤    ⠭  裡
      ணࠬ.    ᪮     
믮   ணࠬ    㦭    뤠  ⥬    
ᯮ짮     筮        㭪樨.     ⥬    頥
ᮮ⢥ 楤    । ணࠬ  .

    ⬥⨬  २⢠  ᪮       ࠢ 
᪮.     ᪨  ⥪    ᨬ
   ணࠬ,           -  ।   
᫥.     祭    ⥬    ਭ   筮
  .  ४஢     ।஢ ணࠬ 
⮬    ਤ.  ணࠬ  "",     -० -
    ⥬    㭪,    ᠬ  㭪樨  .  ᢮
।,   ਪ ணࠬ   ४஢,   뢠
 ﭨ  .  ணࠬ  㦤 ࠢ  '
㫨, ⠢騥 ⥪.

       ᥬ, ᪮  樮 ⥬,   ⫨稥 
।,  易  楤     ਪ   ணࠬ,
      蠥   ⠭   ⠪   裡   ࠧ     
ਫﬨ.    ࠧ, ६  ᪮쪮 ணࠬ  
ᮢ⭮ ᯮ짮 騩 .

   ᪠      ६   믮  ।⠢ 
訥 . ᫨    ணࠬ  ६   㧪,
 易 祭     ⠭     痢
    ⥬.     ᪮        ६
믮 ਪ  ணࠬ, ᯮ  ⮩ 楫 API-㭪樨,
ᠬ,  ᨬ      ⥫, 蠥,   
     㧨,      㤠.  ਬ, ணࠬ 
뤠          짮⥫        祭       
(䮯ந⥫),  㧨    ᮮ騥   ⮫쪮 
砥  ⥫쭮  ⢥.     ணࠬ    ᬠਢ
ᯨ᮪  ᮥ  㤮    㦠       
⮫쪮  稨 ன⢠  ⥬.

    ⥬   VIO,   KBD      MOU     ਬࠬ  ⥪
᪮   ,    ॠ    䥩    ணࠬ
ᯥ祭  묨 묨 ।⢠.

      ⮩      ᬮਬ   ணࠬ, ᯮ騥 楤
᪮   .   㤥      ,       ⢨
    ६  㧪    ६  믮,
             ᥣ⠬     
ᮮ⢥  楤,     ⠪,       樠騥
㫨  ⥪ ᪮ .


                                       
                                        
                ---------------------------------------------


      樨 ⮤ ᪮   ६ 㧪
ᬮਬ     ணࠬ.    ᮢᥬ    :  横᪨
뢮    ࠭          ࠧ.   ⮣  ᪨
뢠    楤.    楤  "⠥"    ࠭   
᭮ ०,  㣠  -  ० 栭.  ਪ ணࠬ
頥  楤ࠬ  ।,    ࠧ । 饭
६  প, ⮬ १  ࠡ  ᫥ 
ᯫ.   ᪮쪮 ᥪ㭤  ᫥ ᪠  ணࠬ   ࠭
 ⨭, 宦  ,  ਢ  㭪 14-3.


 Ŀ
   C > app                                                              
                                                                        
   reverse  : S P E C I A L   M E S S A G E  Ŀ       
   blinking : S P E C I A L   M E S S A G E  Ŀ                    
   reverse  : S P E C I A L   M E S S A G E  ĳĴ       
   blinking : S P E C I A L   M E S S A G E  Ĵ                    
   reverse  : S P E C I A L   M E S S A G E  ĳĴ       
   blinking : S P E C I A L   M E S S A G E  Ĵ                    
   reverse  : S P E C I A L   M E S S A G E  ĳĴ       
   blinking : S P E C I A L   M E S S A G E  Ĵ                    
                                                                      
                                                                      
                                                                      
                                                                      
                                              饥  ஢
                                             ࠦ   ࠦ  
                                                                        
 

              14-3.  ࠡ ணࠬ APP.C


    筮,  ॠ   ᪨  砥   㫨  믮
    ᮤঠ⥫쭮.  ᪨  ,  ਬ,   
㫨,    न⠬   㣨   . 㣨
    ᮤঠ 楤  ࠢ ஬,  ਭ஬  
 ਩ 㤮.

   ᭮ 襩   ணࠬ ⠢    室   䠩.  
䠩 -  ᮡ⢥  ணࠬ   APP.C . ன - 䠩  ᪮
   DYN.C  .   ,  ,  䠩   DYN.DEF , ।⠢騩
⥫ ଠ  । 痢  ().   ᬮਬ
 䠩  ।,  ⥬ ⠢ 䠩 室   ⨫
MAKE (MAKE-䠩), 㤮  ⫠ ணࠬ.


                      室 䠩 ਪ ணࠬ
                      ----------------------------------

     ਢ 室 ⥪ ணࠬ APP.C :


    /* app.c */
    /* ਪ ணࠬ, 뢠 楤   */
    # define INCL_DOS
    # define INCL_SUB
    # include <os2.h>

    char msg[] = "SPECIAL MESSAGE";
    char rev[] = "\r\nreverse: ";
    char blk[] = "\r\nblinking: ";
    main()
    {
      void far pascal  reverse( char far *, int );
      void far pascal blinking( char far *, int );

      while( !kbint()  {
                                     /*  ᮮ饭  ᭮ ० */
        VioWrtTTy( rev, sizeof(rev),  );
        reverse( msg, sizeof(msg) );    /* 맮 㭪樨   */
        DosSleep(500L);
                                     /*  饣 ᮮ饭 */
        VioWrtTTy( blk, sizeof(rev),  );
        blinking( msg, sizeof(msg) );   /* 맮 㭪樨   */
        DosSleep(500L);
      }
      exit(0);
    }


    ணࠬ ६ 뢮  ࠭ ப ⥪  ᭮ 
饬   ०         ,      짮⥫    
- .

   ,    饭    ᪨  砥  楤ࠬ
reverse()   blinking()   ଫ 筮  ⠪ ,     饭 
  㭪.    ⨯     楤    ࠪ⨪
㪠,   void far  pascal ,     室 (⨯
   祭      䠩).   楤 ᮤঠ  
⢥ ࠬ   (⨯  far)  ᮮ饭    .  
室   ⠢ 筮    ᪮    (-
 ),   ᬮਬ ᫥騬.


             室  䠩  ⥪ ᪮ 
             -----------------------------------------------------

       ᮤন 㭪樨   reverse()   blinking() ,  室
⥪ -  ਢ  :


    /* dyn.c */
    /* 㭪樨   */
    /* 뢮 ᮮ饭  ᭮  饬 ० */
    # define INCL_SUB
    # include <os2.h>

    int _acrtused=0;                    /* ᥪ 㦭  */

    void far pascal
    reverse(msgptr, length)
    char far *msgptr;                   /* 㪠⥫ ᮮ饭 */
    int length;                         /*  ᮮ饭 */
    {
      unsigned row, col;                /*   */
      unsigned char attr = 0x70;        /* ਡ ᭮ ० */
      VioGetCurPos( &row, &col, 0 );    /* ।   */
                                        /* 뢥 ப */
      VioWrtCharStrAtt( msgptr, length, row, col, &attr, 0 );
    }

    void far pascal
    blinking(msgptr, length)
    char far *msgptr;                   /* 㪠⥫ ᮮ饭 */
    int length;                         /*  ᮮ饭 */
    {
      unsigned row, col;                /*   */
      unsigned char attr = 0x87;        /* ਡ ० 栭 */
      VioGetCurPos( &row, &col, 0 );    /* ।   */
                                        /* 뢥 ப */
      VioWrtCharStrAtt( msgptr, length, row, col, &attr, 0 );
    }


     楤  ᯮ 㭪  VioGetCurPos()   ।
⮯      VioWrtCharStrAtt()    뢮  ⥪ 
࠭, 稭   ।  樨.   뢮   ᮮ饭
।   ਪ ணࠬ.      ०  ⮡ࠦ
(, 騩) ᯮ  ࠬ  attr  (ਡ).

   䨪   몠    '   ஢       ணࠬ
"࠭"  ६    _acrtused   .     ६    ᮧ
஬ Microsoft C ,  ⮡ । 痢    ணࠬ
     CRT0  ,   ᪨  ᯮ㥬     ६
믮.   㫥   ⢨ ⮣  ⥫쭮   
㦭,  १ । ६  _acrtused    -
.

       楤    ᫥  롨,   㬠, 
筮  ᯮ  ணࠬ.  ⮬, ⮡  
  ᮢ    㭪権   㣨 ணࠬ    㣨
.        ⭮⥩      ⠢ 
ᯥ  .  ᫨    ᠫ  楤  
 North  Coast Brand,     뫮    ,  ਬ,
NorCoPlot_Circe()    NorCoPlot_Line()  ,  ..    reverse() 
blinking()   ࠭    -       .        筮
ᨭࠧ, ⮡  "訬"   쥧 .

    譥    ᪮     룫廊     
室  䠩.            ॢ頥      ⮬
ᯮᮡ,      ⠭  裡          ਪ
ணࠬ.


                              䨭⨢ 䠩
                              -----------------

    ⮡  ࠢ쭮  易  ணࠬ    , । 室
।⠢ ⥫ ଠ.  ᮤন   䨭⨢
(.DEF) 䠩.    룫廊 :


    ; dyn.def
    ; 䨭⨢ 䠩  dyn.c

    LIBRARY DYN INITINSTANCE            ; ⨯ 樠樨
    PROTMODE                            ; ⮫쪮 饭 ०
    EXPORTS  REVERSE                    ; ᫥ 祪 室
             BLINKING


     䨭⨢ 䠩 ᠭ  㪮⢥  짮⥫.
  ᮤন  ଠ,  ।  ᯥ䨪  ਬ  :
㤥         ᮢ⭮   ᯮ㥬,   㤥       ⮫쪮
믮塞,   ᥣ⠬    㤥  (  
 ࠪ⨪)   ..  .DEF-䠩   㬮砭   ᢠ
,    뢠.    砥    DYN.DLL.

      DYN.DEF  ᮤন    ।.  ࢮ    ।,
LIBRARY,    ⮬,   ᮧ   ᭮  DYN.C 䠩 DYN.DLL
    ⥪,     筮 ணࠬ.  䨪
INITINSTANCE     ,          ᮧ           㤥
樠஢  直  ࠧ,     㤥 뢠 ன
ணࠬ,      ࢮ 맮 (  ࠧ'᭨,  
 ).

      ஬ ।  ',   㤥  믮
⮫쪮  饭 ०,     ० ᮢ⨬.    쥬
।     㪭樨,    室    ⠢  
,         㯭    ਪ  ணࠬ     (
"ᯮ஢"  ).    襬  砥    㭪樨  reverse() 
blinking().

    ⥯,   稨   室 䠩  ᪮஢  
    ?  ०   ᥣ, 㦭  ᪮஢ 㫨
APP.C  DYN.C ,   ' 㫨  APP.OBJ  DYN.OBJ .


                         ⨫ IMPLIB
                         --------------

    騩 蠣 ⮨  ⮬, ⮡ ८ࠧ 䨭⨢ 䠩
DYN.DEF    䠩   DYN.LIB ,  ᯮ ⨫  IMPLIB  .
祭 .LIB-䠩  ᮤন   ᯮ塞     
'.  祣  㦥?

    楤   reverse()        blinking()      室     ⠢
믮 䠩 APP.EXE.   , ⮡ ࠢ쭮 ᫠  
  ,    ᮤঠ騩,  APP.EXE      ।
ଠ樥      楤.    ଠ ଫ  
ᯥ樠쭮  , ᮥ塞  䠩 APP.EXE.   襬  ਬ
㪠    ᮤন    筮     ᪮
  DYN.DLL  ,      祪   室  뢠   楤
reverse()    blinking().    ⨫   IMPLIB 砥  ⮬,
⮡    ᭮  ଠ樨,  ᮤঠ饩   .DEF-䠩, ᮧ
.LIB-䠩,   ⥬ 㤥  ᮥ ।஬    '⭮
䠩  APP.OBJ (    㢨,   㣮 ᯮᮡ  ᭠
ணࠬ ⮩ ଠ樥).

   ,   ⨫  CL ,   䠩, APP.OBJ  DYN.LIB,
砥   믮  䠩   ணࠬ  APP.EXE  .  ⨫    Link
ᮧ ⥪ ᪮  DYN.DLL   䠩  DYN.OBJ
, DYN.DEF   ⥬ 䠩 DOSCALLS.LIB  .  ᮧ  䠩
APP.EXE  DYN.DLL  奬筮   㭪 14-4.


     Ŀ        Ŀ                 Ŀ
        APP.C             DYN.DEF  Ŀ             DYN.C   
                             
                     Implib                      
     Ŀ        Ŀ                Ŀ
       APP.OBJ            DYN.LIB                    DYN.OBJ  
                             
                                       
                      ஢         ஢ 
                                            Ĵ
          Ŀ                 Ŀ
           Ŀ                      Ŀ    
                   APP                              reverse()     
              맮 㭪権         
           Ŀ -----------------    Ŀ    
            뫪  㭪樨       ६         blinking()    
           reverse  blinking     믮           
                             
                                   DYN.DLL
                   APP.EXE


                  14-4.  䠩 APP.EXE  DYN.DLL


       믮   APP.EXE   ⥬   ᯮ  ,     맮
reverse()     blinking()   ⭮    ,   㦠 ⥪
DYN.DLL     ,    ⠪  ⠭   室  裡 
ᯥ祭  㯠    뢠  㭪.  ᫨  .DLL-  㦥
室    ,    㦠    㦤; 筮 ⮫쪮
⠭ 裡.


                                 MAKE - 䠩
                                 -----------

       ᮧ  ਪ    ணࠬ    ᫥    ਬ
ᯮ짮  ࠧ  䠩  ᪮쪮  ⥬  ⨫,
       ॡ     ᢮ 樨. ⮬ 
 砥 뢠  ⠢ MAKE-䠩   祭
 ࠧࠡ⪨.

    MAKE-䠩    ६  ᮧ  ᫮ ணࠬ,
    㫥.  ᫨       ,   
  ᢮  ,  稢  㬥,  ⠢塞  
⮬ ࠧࠡ稪.

   MAKE-䠩 -  ⥪⮢  䠩, 騩    ப. ࢠ
ப   뢠 ᨬ: 䠩, 㪠    
ப ( ),    ⠫.  ᨬ  ⮨  
᫥饬 : ᫨ ᨬ  䠩  ᮧ ࠭,  祬     
䠩,      ,       ᮮ⢥⢨  
,      ன   ப  .       ன
(易⥫쭮) ப   ᪠ ணࠬ,  筮   
।, ॣ ᨬ 䠩.

     ࠧ,  MAKE-䠩   ।⠢  ᮡ     祭
ᯥ䨪権, 㪠뢠,    ᯮᮡ   㫨  "ந室"
 㣨.   ਢ ⥪ MAKE-䠩  襣 ਬ :


    # makedyn
    # make-䠩  app.c  dyn.c
    dyn.lib: dyn.def makedyn
       implib dyn.lib dyn.def

    app.obj: app.c makedyn
       cl -c -Lp -G2s -Zp app.c

    dyn.obj: dyn.c makedyn
       cl -c -Lp -G2s -Zp app.c

    c:\dyn.dll: dyn.obj dyn.def makedyn
       link dyn,c:\dyn.dll,,doscalls.lib,dyn.def;

    app.exe: app.obj dyn.lib makedyn
       cl -Lp -G2s -Zp -o app app.obj dyn.lib


    砫 ᮧ 䠩  DYN.LIB   ᯮ짮  ⨫  IMPLIB
.  ⥬     䠩   APP.C     DYN.C.     ᮧ
  䠩  DYN.DLL.     頥   ୥ ⠫, 
⥬      .   ,    ᠬ   ணࠬ
APP.EXE .

   ⨫ CL  ( Microsoft)  ८ࠧ 䠩  ⨯ .C    䠩
⨯ .OBJ.   -c   砥,  ॡ  ⮫쪮   
।஢.   ⮩   樨 㦥 﫨: -Lp
-  ᮧ  ,  ࠡ-      饭  ०,  -G2s   -
ᯮ짮 祭    80286, - Zp   - ᯥ
  㯠     ࠭   .     -o    㢥
  ⮬,      ६     ।
  ࠧ.  㫨 ⨯ .DLL   ᮧ  ⨫⮩  Link ;  CL
 ⮩  楫   . ஡  ⨫   CL   Link   ᠭ 
㬥樨   .

   ⮡   MAKE-䠩 ࠡ뢠 ࠢ쭮, 室  SET
   ६   㦥      ⠫   LIB  
INCLUDE . 筮     䠩 㧪.  ⠫
  ᮤঠ  ᮮ⢥騥     䠩     ,
ᯮ묨 ⥬.


                              ⠫
                             -------------------

     ⮩     ,    䠩    ਬ
ᮤঠ    ⤥쭮  ⠫.    ᨫ ⮣   ᯮ짮
  䠩  ࠧ ਬ. ⠫  ࢮ ਬ
뢠 DYN1  .   DYN.DLL -  ⢥ ,  室騩  
⮣ ⠫. ⮡ ⥬   뫮   ᪠,   饭 
୥  ⠫.   ।  ஡, 易 
⥬,   㫨    ࠧ  ਬ஢ 뢠  . ⮡
 , 믮  ணࠬ ࠧ ᫥ ࠡ⪨ ⨫  MAKE
 ⮣ ਬ.  ࠧ,  㤥 ࠭஢  ⮣, 
ணࠬ   ਬ 㤥   ⥪ ᪮
  㣮 ਬ.


                       㧪  믮 ணࠬ
                       -------------------------------

    ᫥ 㧪   APP.EXE    ⨢  , ⥬,  稢
"⥣"    ணࠬ  ᯥ樠  ,  㦨     
뫪      㭪樨       ⥪   ᪮    .
⢥  㤥   ᪥  饭  .  ᫥
⮣  ⥬  ।    ᯥ樠       祪 室
뢠  ᪨   楤  (  ⮣     ।ᬮ७
). ਪ   ணࠬ    ६ 室   
    襭  ࢮ.  ᫨  㣠  ணࠬ  頥 
㦥   ,   ⥪   ⠥      ,     ᫮
ᯮ    ਫ     ⠭  ࠢ   .     奬
ਢ  㭪 14-5.


                                                       
                                               Ŀ
                                                Ŀ 
    1. ⥬ 㦠 ਪ ணࠬ     APP.EXE   
                                                 
                                               
    
                                               Ŀ
                                                Ŀ 
                                                  DYN.DLL   
    2. ⥬ 㦠                
                                                Ŀ 
                                                  APP.EXE   
                                                 
                                               
    
                                               Ŀ
                                                Ŀ 
                                                  DYN.DLL   Ŀ
    3. ⥬ ⠭ 裡                  
                                                Ŀ    
                                                  APP.EXE   
                                                 
                                               
    
    4. 믮 ணࠬ
    
                                               Ŀ
                                                Ŀ 
                                                  DYN.DLL   <Ŀ
    5. ணࠬ 뢠 㭪              
                                                Ŀ    
                                                  APP.EXE   
                                                 
                                               
    
                                               Ŀ
                                                ............. 
    6. ணࠬ 襭,                            
       㤠                        ............. 
                                               
    

              14-5. ᪠   ६ 㧪


    筮, ᫨  ⥬   墠⠥ ,   窠  (swapping)
,  ᥣ ,   ணࠬ  ,  
㤠.   ஡   , 饭 .


                            IMPLIB
                        -----------------------------

     ।饬  ਬ  ᯮ짮  ⨫⮩ IMPLIB ,  ⮡
 䠩   DYN.LIB   䠩   DYN.DEF .   DYN.LIB   ⥬
᪮   APP.OBJ , ⮡ ᯥ  ணࠬ ଠ樥
  㭪    ⥪  ᪮     DYN.DLL  . 
ଠ       祭    -㣮.    ⮣   㦭
ᮧ   ன .DEF-䠩   ।஢      '
㫥  APP.OBJ   祭   믮 䠩  APP.EXE .  -
⥫  䨭⨢ 䠩  APP.DEF ( ਢ ) ᮮ頥  
⮬,  楤    "஢"  ਪ  ணࠬ
 .    ਬ -      DYN2 - 䠩   DYB.LIB   
㦥.


    ; app.def
    ; 䨭⨢ 䠩  app.c
    PROTMODE                      ; 饭 ०
    IMPORTS  DYN.REVERSE          ; 䠩  窨 室 楤  
             DYN.BLINKING


     ᯮ짮 ⮣ 室  ।஢ 㦭 ਬ
⨫ Link ,    CL . MAKE-䠩   ਬ 룫廊 ⠪ :


    # makedyn
    # make-䠩  app.c  dyn.c

    app.obj: app.c makedyn
       cl -c -Lp -G2s -Zp app.c

    dyn.obj: dyn.c makedyn
       cl -c -Lp -G2s -Zp app.c

    c:\dyn.dll: dyn.obj dyn.def makedyn
       link dyn,c:\dyn.dll,,doscalls.lib,dyn.def;

    app.exe: app.obj app.def makedyn
       link app,app,,doscalls.lib,app.def;


       APP.C  ,  DYN.C    DYN.DEF   ⠫      
ࠢ  ।騬 ਬ஬. ଠ   Microsoft  ४   
ਬ    ᬮ७  ᯮᮡ   ᯮ짮  IMPLIB
  ᮧ  ஬筮  .LIB-䠩.    饬 砥  
    ⨫⮩   IMPLIB  ,        飮 ਫ
⥫ .DEF-䠩.


                          ६   
                          --------------------------

       ந ⠪,  ⮡    ६  뢠
᪮쪨 ࠬ ਪ ணࠬ ( ᯮ짮  
⮣   ணࠬ DYN1 , ⠪  ணࠬ  DYN2 ).   㢨,
  ॠ      ,          ࠧ  
᪮쪨   ணࠬ.   砫      APP.EXE   (   襣
⥫⢠        ४   ࠡ),  ⥬ ४-
   㣮 ᥠ      APP.EXE  ᭮.     
த ⮫쪮 ࠧ, ᪮쪮 .  ᪮쪮  ஢
ணࠬ 믮  ६,    ⮬     室
⮫쪮      .    ணࠬ  頥   㭪 
⥪  ᪮      室. ᪮
楤    ⠢       ॥ࠡ묨,  
  㤭⥩   ६ 饭      ᪮쪨
筨.

     ⮬ ਬ ணࠬ   ।, ᯮ  ,
    頥,     㣨 ணࠬ.     ⮩
    ᬮਬ  ਬ  ணࠬ,  㬥饩   ᯮ  
䠪,  ""   ᯮ "७".


                                       
                                        
                ---------------------------------------------


    ᪠    ६  㧪 ਪ  ணࠬ
ࠪ᪨    頥. 楤     뢠   ணࠬ
筮  ⠪ ,     㭪樨.  ⥬ ᠬ  㦠   
    ࠧ蠥  뫪    ᮤঠ騬       .   ,
᪮   ணࠬ    頥,     ந室  
,   ࠢ   ࠪ᪨  .  㦠
  (᫨    뫠   ࠭ 㦥)   ⠥ ⠬   
,  믮 ணࠬ  .

      ,    ਪ  ணࠬ ,  ⥬,
  ᢮ ॡ  . ।,  ணࠬ,  ࠡ饩
   ஭묨   ⠡栬,    ॡ     ஢    ᫮
᪨ .    ⮣  ᯮ 㭪,  室 
.  ⮩  㪭樨 ணࠬ     ।,    ६
 ᠬ     室    ⥫쭮  ६.   
砥,  ᪮    室   ঠ       楤ࠬ
⨪   ﭭ      ,             ॠ
  ணࠬ  ६ 믮.

     ᯮ짮   ᪮     ணࠬ   ६
믮 㧪  ,  祭     㯠  㧪   
   ந ਪ  ணࠬ. 奬  ⮣ , 
㪠  ᯮ㥬    ⮬  API-㭪権,  ਢ  㭪
14-6.


                                                     
                                             Ŀ
                                              Ŀ 
  1. ⥬ 㦠 ਪ ணࠬ     APP.EXE   
                                               
                                             
  
  2. 믮 ணࠬ
  
                                             Ŀ
                                              Ŀ 
                                                DYN.DLL   <Ŀ
  3. ਪ ணࠬ 뤠        Ŀ
     㧪  - 㭪 DosLoadModule()                  OS/2
                                              Ŀ  
                                                APP.EXE   
                                               
                                             
  
                                             Ŀ
                                              Ŀ 
                                                DYN.DLL   Ŀ
  4. ਪ ணࠬ 砥  -    Ŀ
     樨  - 㭪 DosGetProcAddr()                  OS/2
                                              Ŀ  
                                                APP.EXE   <
                                               
                                             
  
                                             Ŀ
                                              Ŀ 
                                                DYN.DLL   <Ŀ
                                                  
  5. ணࠬ 뢠 㭪                           
                                              Ŀ    
                                                APP.EXE   
                                               
                                             
  
                                             Ŀ
                                                            
                                              ............. <Ŀ
  6. ਪ ணࠬ 㤠                    Ŀ
        - 㭪  DosFreeModule()                  OS/2
                                              Ŀ  
                                                APP.EXE   
                                               
                                             
  

           14-6. ᪠   ६ 믮


       ᫥饬   ਬ,   饬       室,  ᭮
ᯮ   㭪樨     reverse()      blinking().       㫨
ᯮ  ४ਨ  DYN3 .   DYN.C    ,     
। ਬ,    䠩  APP.C  諮 ९, ⠪  
⥯  ᪨  楤      뢠 .   
룫廊 :


    /* app.c */
    /* ਪ ணࠬ, 뢠 楤   */
    /* 㦠   ६ 믮, ᯮ API-㭪樨 */
    # define INCL_DOS
    # define INCL_SUB
    # include <os2.h>
    # define SIZE 32                    /* ࠧ  䠩 */
    char msg[] = "SPECIAL MESSAGE";
    char rev[] = "\r\nreverse: ";
    char blk[] = "\r\nblinking: ";

    main()
    {
      char FailBuf[Size];               /*   ࠭ 
                                           䠩-  訡 */
      unsigned Handle;                  /* handle          */
                                        /* ⨯ 㭪権        */
      void (far pascal *Func1)( unsigned far *, int );
      void (far pascal *Func2)( unsigned far *, int );

                                        /* 㧪   */
      DosLoadModule( FailBuf, SIZE, "DYN", &Handle );

                                        /* 祭 ᮢ 㭪権 */
      DosGetProcAddr( Handle, "REVERSE", &Func1 );
      DosGetProcAddr( Handle, "BLINKING", &Func2 );

      while( !kbint()  {
                                     /*  ᮮ饭  ᭮ ० */
        VioWrtTTy( rev, sizeof(rev), 0 );
        (*Func1)( (unsigned far *)msg, sizeof(msg) );
        DosSleep(500L);
                                        /*  饣 ᮮ饭 */
        VioWrtTTy( blk, sizeof(rev), 0 );
        (*Func2)( (unsigned far *)msg, sizeof(msg) );
        DosSleep(500L);
      }                                 /* 㤠    */
      DosFreeModule( Handle );          /* (易⥫쭮 ⢨) */
      exit(0);
    }


       ணࠬ    ᯮ      API-㭪樨,   ࠡ騥  
⥪    ᪮        :     DosLoadModule()  ,
DosGetProcAddr()    DosFreeModule().  ᬮਬ   ।.


                    㭪 DosLoadModule()
                    -----------------------

     㭪 ॡ  ⥬  㪠   㧨  
  ᪠,  ᫨        .    뤠   믮
DosLoadModule()   ⥬      ,    ணࠬ "⠥
"  .

           DosLoadModule - 㧨  ᪮ 
           --------------------------------------------------------
Ŀ
   DosLoadModule(ObjBuff, BuffLen, ModName, AModHandle);        
   char far *ObjBuff;         /*  䠩- 訡 */ 
   unsigned BuffLen;                   /*    */ 
                                                                
   char far *ModName;                /* ASCIIZ-   */
   unsigned far *AModHandle;     /*  handle'   */

    㭪樨    ⭮   ,  㦭   㧨.
 ⠪       ,    ⥬
  䠩, 맢襣 訡 ( 砥 㤠筮 饭 
㭪樨;   ⮨  ⠪ ,     맮  DosExecPgm() ).
DosLoadModule()    頥   handle      .      handle
ᯮ  ᫥ 뫮  .


                           㭪 DosGetProcAddr()
                           ------------------------

     ᪮ ਪ ணࠬ  뤠   㧪 , 
-        楤    , ⮡ 
       뢠.       ⮣   ᯮ    㭪
DosGetProcAddr().

                DosGetProcAddr -   㭪樨  
                ----------------------------------------------
Ŀ
   DosGetProcAddr(ModHandle, FuncName, AFuncAddr);              
   unsigned ModHandle;                 /* handle   */  
   char far *FuncName;                 /* ASCIIZ- 㭪樨 */ 
   (pascal far * far *)()AFuncAddr;    /*  㭪樨 */      

    稢  室 handle     㭪樨, DosGetProcAddr()
頥    .        쭥襬  ᯮ   
饭  㭪樨.


                           㭪 DosFreeModule()
                           -----------------------

    ᫨  ணࠬ        頥      ,      
"᢮"   .  ⮣ 㦨 㭪 DosFreeModule().

                    DosFreeModule - ᢮  
                    -------------------------------------
Ŀ
   DosFreeModule(ModHandle);                                   
   unsigned ModHandle;                 /* handle   */ 

     ⮩   㭪樨 ⮫쪮     㬥 -  handle  ᢮
  .    ᫥  믮  ⮩   㭪樨  handle   ⠭
⢨⥫,    ⭮     ᠬ, 祭  ࠭ 
  DosGetProcAddr(). ᫨  ⥬ ᭮     
㭪       ,   室   㤥   稭      믮
DosLoadModule().

    襭  ணࠬ   裡    뢠, ⮬ 
襬  ਬ    室  ⢮   DosFreeModule()  .
   饬 砥   㭪  ᫥ ᯮ짮,   ⮫쪮
ਪ ணࠬ  ࠡ  .

    ⥬ ࠭ ଠ  ⮬, ᪮쪮 ணࠬ 易   
    㫥  .   㤠    ⮣,
   ᫥   易    ணࠬ   , 
뤠    ᢮ ।⢮ DosFreeModule().


                              .LIB-䠩  㦥
                              ------------------

     ᪮    ६ 믮  ணࠬ 뤠
  ⥬    㧪    ⠭   痢
  ᮤঠ騬       㭪ﬨ.      痢,   ᮧ騩
믮 ணࠬ,   뢠  ⮣,    ᫥⢨ 
"㯨     ⠪"     -  .   ⮬     㦭  
ᯥ樠쭠  ,  ᮤঠ    ⥪  ᪮  -
   室      㭪権,      ० 﫨 
ணࠬ  .EXE-䠩.    ⮣  ⯠  㦤  .LIB-䠩, 
     ன      ᮧ.   ணࠬ      
।  ⠪,           頥     楤ࠬ,
砥 ᪨  (䠩   .DYN.DEF   室 -० 
ᮧ  DYN.DLL ).   룫廊 MAKE-䠩  襣 ਬ :


    # makedyn
    # make-䠩  app.c  dyn.c

    app.obj: app.c makedyn
       cl -c -Lp -G2s -Zp app.c

    dyn.obj: dyn.c makedyn
       cl -c -Lp -G2s -Zp dyn.c

    c:\dyn.dll: dyn.obj dyn.def makedyn
       link dyn,c:\dyn.dll,,doscalls.lib,dyn.def;

    app.exe: app.obj makedyn
       cl -Lp -G2s -Zp -o app app.obj



                                         
          ---------------------------------------------------------


        ᬮ७      ਬ   ᪮
 DYN.DLL    ᮤঠ  譨 ६  (  ᪫祭
_acrtused ).  ६   row      col   ᮧ   ࠧ 
맮  reverse()     blinking(),   ⮬᪨  ६
    㭪.    ᯮ짮 譨    
     筮   ᯮ짮  譨  ६     
㭪.

    譨         ᪮     
묨    묨.             㣨   뤥
⤥  ᥣ .   砥   ६   
ணࠬ,  ࠡ饩     ,   ࣠  ᢮   ᥣ,   
 楤ࠬ       㤠 㭨   ணࠬ
ଠ.  ,    ⭮     ᮧ  ⮫쪮  
ᥣ  譨  ,  㤠   ᪨  砥    㭪樨
 騥   ணࠬ ᢥ.

    ,  ਬ,        ᮤন  楤   ࠢ
ਭ஬.      ᥣ    ᮤঠ ,
騥 뤠      ⤥   ணࠬ,    쭮
ᥣ  -  ଠ    ᠬ  ਭ.   ਪ  ணࠬ 
  㭪権,  室    ⠢  ,       
ᮡ⢥   ६, ⠪      ६  
饣 ᥣ. 㭮 14-7  .


                  Ŀ       D Y N . D L L
                    ᥣ-1 Ŀ Ŀ
 Ŀ            Ŀ  
 APP1.EXE>             
                                                 
                                                           
                 Ŀ                   
                   ᥣ-2 Ŀ                
 Ŀ                        
 APP2.EXE>   D Y N     
                                                
                                                          
                Ŀ                   
                  ᥣ-3 Ŀ                
 Ŀ                       
 APP3.EXE>             
                                    
                                          
                                          Ŀ
                                            Ŀ  
             >             
            >  G L O B    
            >             
                                                 
                                             
                                                      
                                             Ŀ
                                                    
                                                  ᥣ     
                                             


                    14-7.    


                  ணࠬ, ࠡ  ᥣ⠬ 
                  -----------------------------------------

    ᬮਬ  ਬ  ⮩  ணࠬ,  ⮡  த஢
ࠡ    묨     묨  ᥣ⠬    .   
⠢騥    㫨  室    ४ਨ   DYN4 . ⥪
᪮    ⮨      ⥩:     祭
楤, 騥    ,    - ࠡ騥  
 ᥣ⮬.   ࠭᫨  ⤥쭮,   ⥬
ᮢ⭮   ।    ࠧ     .  祭  
  ⨯ ᥣ⮢ .

    ணࠬ  뢠  짮⥫     㪠   ந쭮
᫥⥫쭮   ᨬ      ப. ਬ,  
ࠧ    ணࠬ, ࠢ   :

         app  Joe

    ⥬ ४  㣮 ᥠ  맮  ᭮,  
ࠧ ⠪ :

         app  Peter

    ணࠬ ।  㪠    ப    .
      :    쭮  ᥣ 
(⠭    ࠭   ⮫쪮    ப   ᨬ)     
쭮 ᥣ,    㤥   饬   ᯨ
.

   ᫥  ⮣   ணࠬ    뢠   㭪樨    , ⮡
⮡ࠧ  ࠭  ᫥   ᥭ     ᥣ
 ,   ᯨ᮪    쭮  ᥣ,  ⠢
"ᮢ묨 ᨫﬨ"  ணࠬ,  饭묨  ࠧ ᥠ.  
ਢ      ਠ⮢ ⢨   짮⥫
   ணࠬ. ।,     app.exe   㦥  ᪠
 ࠧ ᥠ,   뫮   ᠭ. ⨬  ⥯   ⨩
ࠧ, 㪠   ப   Robert :

         C>app  Robert
         Type 'g' to see all app's names,
              'l' to see this app's name,
              'q' to quit program: l    ,
         Local name: Robert

         Type 'g' to see all app's names,
              'l' to see this app's name,
              'q' to quit program: l    ,
         List of names in global space:
         Joe
         Peter
         Robert


    ⨥ 㦭    뢥  ᯫ 
ᮤন  쭮    ᥣ     (   'l')  ,   
ᮤন 쭮   ᥣ (  'g'). ᫨   
'q', ணࠬ .


                                室 䠩
                                --------------

      룫廊 室  ਪ ணࠬ :


/* app.c */
/* ணࠬ,   쭮   ᥣ⠬  */
    # define TRUE 1

    main(argc, argv)
    int argc;
    char *argv[];
    {
      void far pascal glostore( char far *, int );
      void far pascal gloshow;
      void far pascal locstore( char far *, int );
      void far pascal locshow;
      if( argc != 2 )
        { printf("Syntax: app name"); exit(1); }
                       /*     ᥣ */
      glostore( argv[1], strlen(argv[1]) );
                       /*      ᥣ */
      locstore( argv[1], strlen(argv[1]) );

      while( TRUE )  {
        printf("\nType 'g' to see all app's names,\n");
        printf("     'l' to see this app's name,\n");
        printf("     'q' to quit program:\n");
        switch( getch() )  {
          case 'g':
            gloshow(); break;    /*    */
          case 'l':
            locshow(); break;    /*  쭮  */
          case 'q':
            exit(0);
        }                        /* 㤠    */
      }
    }


      㫥     饭    ६  㭪  ⥪
᪮  .  ࢠ    ,   glostore()  ,  
㪠    ப  ᪥  ணࠬ    
ᥣ  .  ,  locstore()  ,  頥    
ᥣ    ணࠬ    ⥪饣  ᥠ. ,  gloshow() ,
뢮  ࠭   ᯨ᮪ , 室   쭮 ᥣ,  
⢥,  locshow()  ,  ⮡ࠦ  ᮤন  쭮  ᥣ
.

        믮   APP.C   ᭠砫  뢠    
᫥ 㭪権, ⮡     ப  
ᥣ :  쭮    쭮,   ⥬   横 
 .  ᨬ   ⮣,    㤥  ,
'g'    'l',    ࠭   ᮤন  쭮, 
쭮  ᥣ.   室  䠩     ⮩    , 
ࠡ⠥     ᥣ⮬ , 뢠   DYN.C ,    
। ਬ.   ⥪ :


    /* dyn.c */
    /* ࠭  ⮡ࠦ ଠ  쭮 ᥣ */
    # define INCL_SUB
    # include <os2.h>
    # define LENGTH 30                  /*     */
    static char name[LENGTH];           /*   ࠭  */
    int _acrtused=0;                    /* ᥪ 㦭  */

    void far pascal
    locstore( nameptr, length )    /* ࠭   쭮 ᥣ */
    char far *nameptr;                  /* 㪠⥫  */
    int length;                         /*   */
    {
      int j;

      for(j=0; j<length; j++)           /* ७   */
        name[j] = *nameptr++;           /*   */
    }

    void far pascal
    locshow()                           /* ⮡ࠧ 쭮  */
    {
      VioWrtTTy("Local name: ", 12, 0 );
      VioWrtTTy( name, strlen(name), 0 );
      VioWrtTTy("\r\n", 2, 0 );
    }


     䠩  ᮤন 㭪樨   locstore()      locshow() , 
ᯮ  ࠭    쭮  ᥣ    
  ⮡ࠦ.   室  䠩    ன    ,  ன
ᮡ࠭ 㭪樨, ࠡ騥   ᥣ⮬ ,  뢠
GLOB.C .   :


    /* glob.c */
    /* ࠭ ᯨ᮪   쭮 ᥣ  */
    /*   ணࠬ । ᢮        */
    # define INCL_SUB
    # include <os2.h>
    # define NUMBER 20          /* ⢮         */
    # define LENGTH 30          /*               */
                                /* ᨢ   */
    static char names[NUMBER][LENGTH];
    unsigned count=0; /* ⥪饥 ⢮   ᯨ᪥ */

    void far pascal
    glostore( nameptr, length ) /* ࠭          */
                                /*     쭮 ᥣ */
    char far *nameptr;                  /* 㪠⥫   */
    int length;                         /*        */
    {
      int j;

      for(j=0; j<length; j++)           /* ७ ப  */
        names[count][j] = *(nameptr+j); /*   ᨢ */
      count++;                          /* 稪  */
    }

    void far pascal
    gloshow()                           /* ⮡ࠧ ᯨ᮪  */
    {
      static char head[] = "List of names in global space\r\n";
      int j;

      VioWrtTTy( head, strlen(head), 0 );
      for(j=0; j<count; j++)  {         /* ⮡ࠧ   */
        VioWrtTTy( names[j], strlen(names[j]), 0 );
        VioWrtTTy("\r\n", 2, 0 );
      }
    }


       䠩   DYN.C ,  ᠭ   㭪樨,  glostore()  
gloshow(),  ࢠ              ᯨ᮪ 
쭮  ᥣ  ,       뢮    ᯨ᮪   
ᯫ.


                              䨭⨢ 䠩
                              -----------------

    ᫨  㭪樨,  室騥    ⠢  ⥪ ᪮
,       ᥣ⠬  ,   ଠ    ⮬
 ⢮  .   DYN.DEF  ⥯ 룫廊 ⠪ :


    ; dyn.def
    ; 䨭⨢ 䠩  dyn.c

    LIBRARY DYN INITINSTANCE            ; ⨯ 樠樨

    PROTMODE                            ; ⮫쪮 饭 ०

    EXPORTS  LOCSTORE                   ; ᫥ 祪 室
             LOCSHOW                    ; 楤  
             GLOSTORE
             GLOSHOW
                       ; ᮢ⭮  ࠧ쭮 ᯮ㥬 ᥣ
    SEGMENTS EACHPRO        CLASS 'FAR DATA' NONSHARED
             EACHPRO_CONST  CLASS 'FAR DATA' NONSHARED
             EACHPRO_BSS    CLASS 'FAR DATA' NONSHARED
             ALLPROS        CLASS 'FAR DATA' SHARED
             ALLPROS_CONST  CLASS 'FAR DATA' SHARED
             ALLPROS_BSS    CLASS 'FAR DATA' SHARED


      ᯮ㥬  䠩   뢠   ⠪  ,       
। ਬ.  ।   SEGMENTS   砥 .  
   ᥣ⮢  .  ᥣ    
'CODE'  'DATA',  ⥫쭠 ᯥ䨪 'NEAR' 'FAR'. ᫨
    ࠭  ᯥ䨪  'FAR  DATA',    砥, 
饭      㤥  ந  ।⢮ 㪠⥫ ⨯
far .    ᯮ짮 (NONSHARED/SHARED)   ।, 㤥  ᥣ-
   .

    祬   㪠  ⠪   ᥣ⮢?    㦭 ⮫쪮
:  ,  㣮 -  : EACHPRO  ALLPROS.  
⮬,        ⮬᪨  ᮧ    ⥫
ᥣ    ᥣ,        CL (  
   ⮣ ᥣ  砭   _CONST    _BSS  ). ⮡ ᮮ
।   痢,          ⨬  ᥣ⠬,   室
㯮    䨭⨢ 䠩.

    ⢨⥫쭮, ᫨   .DEF-䠩        
ᠭ      ᥣ  ,   㤥 ᮧ ।஬
⮬᪨. ⮬  ᥣ   ALLPROS 뢠  易⥫쭮; 
㪠 ⮫쪮  ⮣,  -  ࠧ稥   묨 
묨 ᥣ⠬. ᫥ ᥣ   ᠭ.


                                  MAKE-䠩
                                  ---------

    ⮢       ᮡ       楫  
ᮮ⢥⢨  ﬨ, ਢ묨   MAKE-䠩 :


    # makedyn
    # ᮧ .EXE-䠩   app.c    dyn.c

    dyn.lib: dyn.def makedyn           #  䠩  
       implib dyn.lib dyn.def

    app.obj: app.c makedyn             # ' 䠩 ਪ ணࠬ
       cl -c -Lp -G2s -Zp app.c

    dyn.obj: dyn.c makedyn             # ' 䠩 "쭮"  
       cl -c -Asnu -Lp -G2s -Zp -ND EACHPRO dyn.c

    glob.obj: glob.c makedyn           # ' 䠩 "쭮"  
       cl -c -Asnu -Lp -G2s -Zp -ND ALLPROS glob.c

    app.exe: app.obj dyn.lib makedyn   # .EXE-䠩 ਪ ணࠬ
       cl -Lp -G2s -Zp -o app app.obj dyn.lib

    c:\dyn.dll: dyn.obj glob.obj dyn.def makedyn        # .EXE-䠩 
       link dyn+glob,c:\dyn.dll,,doscalls.lib,dyn.def;


      DYN.OBJ     GLOB.OBJ   ᯮ짮  権
CL  ,    ᪮쪮  ⫨    ,  ਬ﫨  
। ਬ.   _ND  㪠뢠,  䠩 ᮤন  ᥣ
  ⠭ :  EACHPRO     DYN.C    ALLPROS   
GLOB.C .

    筮   ६   ⥪        ᯮ     
ᥣ.      ᯮ짮  樨   _ND    ।
⠥  ࠢ :  ᮤন ॣ஢  SS    DS  ⥯
ࠧ砥.  ⥫쭮,    樨   ணࠬ   
ᯮ짮      -A      㪠    ᮧ    ணࠬ
ᮡ⢥   .   襬  砥   㪠  -Asnu  , 
砥:      ('s'), 㪠⥫   ⨯  near ('n')  
ࠧ ᥣ, ⢮    ६  ⥪    ('u').
    ஡      ⨬  ﬨ    
㪮 짮⥫   .


                                       
                ---------------------------------------------


    楤ன 樠樨  뢠  ணࠬ ,  
믮    ࢮ  㧪    ᪮   
.  楤      ,    ᯮ殮
 뤥   (ਬ, ) ,   ॡ   ⠭
ࠬ       㭪樮஢.   ,   ᪠,      
樠        ।    䨣樨
 樨  ⥬.

   楤ன 樠樨   몥 ᥬ. , 
  蠥    ନ    ᥬ   맮 ணࠬ  ,
  믮   ࠡ. ⥫쭮,       祪
ᥬ୮   ⥪      ᯮ짮       楤
(筮,  ᫨  ,            楤   
ᥬ).

     㫨, 室騥  ⠢ ணࠬ, 室  ४ਨ  DYN5 .


                                室 䠩
                                --------------

       ࠬ ᯮ     㭪   reverse() ,  
०:    뢮    ࠭     ᭮  ०  । 
ᮮ饭.    楫        ⪠  㭪樨
blinking() .   룫廊 室  ਪ ணࠬ :


    /* app.c */
    /* ਪ ணࠬ, 뢠 楤   */
    # define INCL_DOS
    # define INCL_SUB
    # include <os2.h>

    char msg[] = "SPECIAL MESSAGE";
    char rev[] = "\r\nreverse: ";
    main()
    {
      void far pascal  reverse( char far *, int );

      while( !kbint()  {
                              /*  ᮮ饭  ᭮ ० */
        VioWrtTTy( rev, sizeof(rev),  );
        reverse( msg, sizeof(msg) );    /* 맮 㭪樨   */
        DosSleep(500L);
      }
      exit(0);
    }


    室  䠩       ᪮    砥
⥯ ⥪ 㭪樨  blinking() ,  ᮤন  㭪  init()
,    뢠    ᥬ୮  楤  㧪  
.


    /* dyn.c */
    /* 뢮 ᮮ饭  ᭮ ० */
    /* 楤 樠樨, 뢠   get.asm  */
    # define INCL_SUB
    # include <os2.h>

    chfr initmsg[] = "THE DLL IS INITIALIZING SOMETHING\r\n";
    int _acrtused=0;                    /* ᥪ 㦭  */

    void far pascal                     /* 楤 樠樨 */
    init()
    {
                                        /* 뢥 ப */
      VioWrtTTy( initmsg, sizeof(initmsg), 0 );
      return(1);          /* ᮮ get.asm ,    浪 */
    }
    void far pascal
    reverse(msgptr, length)
    char far *msgptr;                /* 㪠⥫ ᮮ饭        */
    int length;                      /*  ᮮ饭            */
    {
      unsigned row, col;             /*              */
      unsigned char attr = 0x70;     /* ਡ ᭮ ०  */
      VioGetCurPos( &row, &col, 0 ); /* ।   */
                                     /* 뢥 ப */
      VioWrtCharStrAtt( msgptr, length, row, col, &attr, 0 );
    }


    㭪    init()      襬   ਬ     樮:
⢥,        -   뢮 ᮮ饭, 饥
㡥  ⮬,     믮.  ॠ    ணࠬ
楤 樠樨 ⢮  ⢥ ஫.

        룤廊   楤  樠樨     襬    砥
(⨬,   ॠ   ணࠬ  ⢮   ⢥
஫) :


    ; get asm
    ; 믮  㧪  
    ; 뢠 楤  init() ,   ᭮ ࠡ

       EXTRN   INIT:FAR          ; ' 㭪樨  init()
       ASSUME  CS:_TEXT          ; । ॣ  CS
_TEXT  SEGMENT BYE PUBLIC 'CODE' ; ணࠬ ᥣ   _TEXT
START  PROC    FAR               ; 楤 ⨯  far
       call    INIT              ; 맮 ணࠬ
       ret                       ; 
START  ENDP                      ;  楤
_TEXT  ENDS                      ;  ᥣ
       END     START             ; 窠 室  ணࠬ ᥣ


     ਢ ணࠬ  祣, ஬ । ᥣ   -
饭  㭪樨  init() . ᫥  믮 㭪樨  ࠢ 頥
樮 ⥬.
       룫廊 䠩  DYN.DEF :


    ; dyn.def
    ; 䨭⨢ 䠩  dyn.c

    LIBRARY DYN INITINSTANCE            ; ⨯ 樠樨

    PROTMODE                            ; ⮫쪮 饭 ०

    EXPORTS  REVERSE                    ; ᫥  室 楤


     ᮢ    䠩  DYN.DEF   ᪫祭 ⮣,   
砥 ᯮ ⮫쪮  㭪  reverse() .


                                  MAKE-䠩
                                  ---------

     ⥯  ᮥ    室 䠩 ?   ਢ  ⥪
MAKE-䠩, ᮧ饣 "⮣" 䠩  APP.EXE    DYN.DLL .


    # makedyn
    # ᮧ 䠩   app.c    dyn.c

    dyn.lib: dyn.def makedyn   #  䠩  
       implib dyn.lib dyn.def

    app.obj: app.c makedyn     # ' 䠩 ਪ ணࠬ
       cl -c -Lp -G2s -Zp app.c

    dyn.obj: dyn.c makedyn     # ' 䠩 
       cl -c -Asnu -Lp -G2s -Zp dyn.c

    get.obj: get.asm makedyn   # ' 䠩 ᥬ୮ ணࠬ
       masm get.asm,,,;

    c:\dyn.dll: dyn.obj dyn.def get.obj makedyn    # .EXE-䠩 
       link dyn+get,c:\dyn.dll,,doscalls.lib,dyn.def;

    app.exe: app.obj dyn.lib makedyn # .EXE-䠩 ਪ ணࠬ
       cl -Lp -G2s -Zp -o app app.obj dyn.lib


    ᪮ ⠫    ᮧ  '⭮  
GET.OBJ    室    GET.ASM  .  '     
஠ᥬ஬ (Microsoft  macro assembler),   ⥬  ।
ᮢ⭮    DYN.OBJ ,   १ 祣 砥   DYN.DLL.
 ஠ᥬ    MASM.EXE         ᯮ       ⥪饬
४ਨ      ४ਨ,    ஬   㪠  
PATH . ⮡ 믮  ਬ,  㦭  ᥬ, ᪮-
   ଫ ⮫쪮 맮 ᭮ 楤 樠樨.


                                ணࠬ
                               ----------------

      ,      ᮧ   㦭  믮  䠩 
⨬ ணࠬ ?  砫   ࠭   ᮮ饭 "THE  DLL
IS INITIALIZING  SOMETHING" (  "   ந樠஢" ). 
     ⮬,     楤  뫠  ⨢஢,   믮
㭪   init()  .    砭   樠樨  稭  ࠡ
᭮ ணࠬ,   뢮   ᯫ   ⮩  2 ࠧ 
ᥪ㭤  ᭮ ० ᮮ饭 "SPECIAL MESSAGE".


                                      
                             -------------------


     ⮩     ᬮ७ ⥬ ᪮  .  
,    㫨   ᪮    몥   
ணࠬ, 뢠騥 㭪樨   . 樠  䨭⨢  䠩
(    ਬ   뢠 DYN.DEF)     ᮥ 
  ᪮   ,  ⮡         ࠢ
ࠡ   饭    ᮤঠ騬       㭪. 㣮 䠩
   ᮥ    믮  䠩 ணࠬ.    
 䠩, ந  ⮣  䨭⨢ 䠩,  楯
    (ࠧ     DYN.DEF   䠩   DYN.LIB),  ᯥ樠쭮
ᠭ 䨭⨢ 䠩  ( APP.DEF ).      
뢠    ணࠬ  㭪権        ,  ஬ 
㭪樨  室. ணࠬ    ᮤন.

     ᬮ५  ਬ   ᪮  㫥  
६ 㧪,  ⠪    ६   믮 ணࠬ.    ᫥
砥 ᯮ API-㭪樨   DosLoadModule()   㧪   
,  DosGetProcAddr()  । ᮢ 祪 室  㭪権
 ⠢    DosFreeModule()   㤠   .

    㣨  ਬ த஢ : ᯮ짮  㫥 
, 室    쭮  ᥣ ,  ਬ
楤 樠樨, 믮饩   ࢮ砫쭮  㧪
.