Compiller une DLL

Compiller une DLL - VB/VBA/VBS - Programmation

Marsh Posté le 02-03-2004 à 20:36:09    

DESOLER POUR LE MESSAGE TEST MAIS MON COMPTE N'ETAIT PAS ACTIVER POUR LES POST CET APRES MIDI ET J' AI EFFECTUER UN TEST. J' AI REEDITER LE MESSAGE MAIS JE N'EST PAS PU LE MODIFIER CAR UN MODERATEUR AVAIT CLOS LE SUJET . DESOLE!!!!
 
Bonjour a tous .
 
Voila j' ai une routine de décompréssion de fichier .bin ou sont stocké des image .BMP compréssé. Je ne connait rien au Visual C++
et cette routine a été écrite dans ce language.
On m' a dit que je pouvait compilé ma fonction dans une dll pour quel soit utilisé par mon prog visual basic.
 
Quelqu' un connait il le lien vers un tutorial qui traiterai ce sujet.
PS : Faut il que je définisse des fonction de mon code dans mon programme :
 

Code :
  1. BOOL CWECompress::_DeCompress(BYTE **BufDest, BYTE *BufSrc)
  2. {
  3. BYTE *ptrRes = *BufDest;
  4. LONG k3;
  5. ULONG i,j;
  6. BYTE k,k2;
  7. i = 0;
  8. while (TRUE)
  9. {
  10.  if ((i & 0x100) == 0) // (i < 0x100) or (0x1000 <i < 0x10FF) ...
  11.  {
  12.   k = *BufSrc & 0xFF; // Get data and do data % FF
  13.   BufSrc++; // add pointer
  14.   i = k | 0xFF00; // i = 0xFF unito a k
  15.  }
  16.    
  17.  k2 = *BufSrc & 0xFF; // get data    
  18.  if (((BYTE) i & 1) == 0) // t = 0 se i pari, t = 1 se i dispari
  19.         // Literal
  20.  {
  21.   *ptrRes = (BYTE) k2; // res = k2
  22.   ptrRes++;// add pointer
  23.   BufSrc++;
  24.  }
  25.  else
  26.  {
  27.   if ((k2 & 0x80) != 0)  // k2 & 0x80 != 0 Solo se k2 > 0x80 il controllo passa
  28.           // Caso in cui abbiamo 1 solo byte per il comando,  
  29.           // nbit move = 4, nbitrepeat = 4
  30.   {
  31.    BufSrc++;// add pointer
  32.    if ((k2 & 0x40) != 0) // k2 & 0x40 != 0 Solo se k2 > 0xC0 il controllo passa
  33.    {
  34.     // blocco per copiare i bytes in plain mode
  35.     // nrepeatmax = 0xFE-0xB9 = 69 7 bit
  36.     // nrepeatmin = 0xC0-0xB9 = 7
  37.     k = k2 & 0xFF;// k = k2 & 0xFF
  38.     k3 = k - 0xB9;// k3 = k - 0xB9  k3 = numero ottenuto sottraendo k2 fatto passare
  39.     if (k == 0xFF)
  40.      break; // esci dal ciclo
  41.        
  42.     // ciclo che copia i k3 bytes in plain mode
  43.     while(k3-- >= 0) //sicuramente k3 > 0
  44.     {
  45.      k2 = *BufSrc & 0xFF;// get data
  46.      BufSrc++;// add pointer
  47.      ptrRes++;// add pointer      
  48.      *(ptrRes - 1) = (BYTE) k2; // write k2 on ptrRes
  49.     }
  50.                      
  51.     i = i >> 1;// i SHR 1
  52.     continue;
  53.    }
  54.    // questo j mi dirà quanto dovrò spostarmi indietro per ripetere k3+1 volte il  
  55.    // ciclo (max 16)
  56.    // max j = 16, k3 = 4 con BF
  57.    j = (k2 & 0x0F) + 1;// k2 & 0x0F = prendo gli ultimi 4 bit e sommo 1  
  58.    k3 = (k2 >> 4) - 7;// k2 >> 4 = tolgo gli ultimi 4 bit,e tolgo 7;
  59.    // k3 mi dice quante volte devo ripetere il byte + 1 volta del ciclo + 1 messa in precedenza
  60.    // es. 90 -> j = 1 [1 byte indietro], k3 = 90 >> 4 - 7 = 9 - 7 = 2  
  61.    // -> 2 + 1 + 1 = 4 volte
  62.                
  63.   }
  64.   else
  65.   {
  66.    // 2 bytes per il comando tipo 24 01
  67.    // nbit move = 14, nbitrepeat = 6
  68.    j = *(BufSrc + 1) & 0xFF;// get data (prendi il byte successivo)
  69.    BufSrc += 2;// add pointer by 2
  70.    k3 = (k2 >> 2) + 2;// k3 = togli ultimi 2 bit + 2 (24 = 11 volte infatti)
  71.    j = j | (k2 & 3) << 8;// j = j | (k2 & 3)*256
  72.    // max j = 1024, k3 = 33 con 7F FF
  73.    // numero di bytes da arretrare per poi scrivere k3 volte i bytes ritrovati
  74.    // es 24 01 -> j = 01 | (24 & 3) << 8 = 1 | 0 = 1, k3 = 24 >> 2 + 2 = 9 + 2 = 11
  75.    // -> 11 + 1 + 1 = 13 volte
  76.   }
  77.        
  78.   // ciclo per ripetere k3 volte + 1 il byte a partire dalla posizione -j    
  79.   for ( ; k3>=0; k3--) // loop until k3>=0
  80.   {
  81.    *ptrRes = *(ptrRes - j) & 0xFF;// write data from first (far j bytes) for k3 times
  82.    ptrRes++;
  83.   };
  84.  }
  85.  i = i >> 1;
  86.      
  87. }
  88.    
  89. return TRUE;
  90. }


 
 
Je pense qu' il faut définir ces fonction non ?
 
BYTE *ptrRes = *BufDest;
 
 LONG k3;
 ULONG i,j;
 BYTE k,k2;
 
 i = 0;
 
 
Merci.

Reply

Marsh Posté le 02-03-2004 à 20:36:09   

Reply

Marsh Posté le 02-03-2004 à 20:37:09    

PS vous pouvez deleter mon post précédent svp les modos.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed