kb:com_compatibility_issues_vb6

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
kb:com_compatibility_issues_vb6 [2013/11/05 14:58] – created milanokb:com_compatibility_issues_vb6 [2013/11/05 15:06] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Održavanje kompatibilnosti COM interfejsa u VB6 projektima ====== ====== Održavanje kompatibilnosti COM interfejsa u VB6 projektima ======
 +
 +
 +===== The binary compatibility DLL or EXE contains a parameter type or return type whose definition can not be found =====
 +
 +
 +Greška označava narušavanje kompatibilnosti na nivou fajla koji bi trebao kompatibilnost da održava.
 +
 +
 +Na ovom primeru razmatraće se situacija sa **BLRManufSif.dll** bibliotekom.
 +
 +
 +**Kako je rešeno ?** \\ 
 +\\ 
 +1. Ako zvirnemo u TypeLib (i uvek samo tamo) u potrazi za BLRManufSif.dll-om videćemo da su tamo registrovane 3 verzije: x.a, x.b i x.c.  X.C je najnovija.\\ 
 +2. Pogledamo isti ključ na MSRV i vidimo da je tamo samo najnovija verzija X.C.\\ 
 +3. Obrišemo "viškove" u registru u kom smo ih našli (x.a i x.b)\\ 
 +4. Guala !  Problem sa DLL kompatibilnosti rešen !\\ 
 +\\ 
 +\\ 
 +**Zašto ?** \\ 
 +\\ 
 +Pretpostavimo da je CopyOf.. nastao u doba dok je bila aktuelna verzija X.A neke komponente od koje zavisimo. U međuvremenu verzija se popela na X.C koji nije sasvim kompatibilna sa X.A. Šta će se desiti ?\\ 
 +\\ 
 +DLL za održanje kompatibilnosti pokušava da nađe otisak revizija X.A i ako u tome uspe uporediće ga sa sadašnjim i utvrditi da ne valja. Kako je to neočekivano, i poruka je blesava.\\ 
 +Onda se ja dosetim i obrišem iz registra podatak da je uopšte registrovana X.A verzija. Sada se DLL pali, gleda u registru da li postoji X.A, vidi da nema, pa onda kako ima instrukciju da traži novije verzije, pronalazi X.C. Njegov otisak uspešno upoređuje sa tekućom registracijom i sadržajem DLL-a i sve je u redu.\\ 
 +\\ 
 +Ukratko...grešku ovog tipa  "DLL or OCX compatibility can't find...bla,bla..." po pravilu možeš rešiti na ovaj način.\\ 
 +\\ 
 +\\ 
 +**Šta još može da se nađe ?** \\ 
 +\\ 
 +Ovo nije opasno jer je GUID drugačiji, ali ponekad se može desiti da u potrazi za DLL-om, po imenu, naiđeš na "ostatak" stare registracije. Obično će verzija biti znatno manja od tekuće, kažem, i GUID će biti drugačiji, ali može da zbuni.\\ 
 +Da bi bio siguran da se radi o "duhu", obrišeš podatak o registraciji (samo verziju) ponovo registruješ komponentu i proveriš da li se podatak o registraciji vratio. Ako nije, obrišeš ceo ključ.
  
  • kb/com_compatibility_issues_vb6.1383663502.txt.gz
  • Last modified: 2013/11/05 14:58
  • by milano