[python] Berkeley DB XML

Petr Prikryl Prikryl na skil.cz
Pondělí Září 15 07:58:52 CEST 2003


Petr Vaněk ...
> Jarda Pachola ...
> > Josef Mikloš ml. ...
> > >
> > > poradi mi nekdo, jak nainstalovat (zprovoznit) Berkeley DB (XML)
> > > v Pythonu, nebo obecne, jak vyuzit dll knihovnu, je treba provadet
> > > nejakou registraci knihovy atd.
> >
> > co si tak pamatuju, tak ve Windows byl nejaky program regsvr32,
> > ktery registruje DLL knihovny

Pokud dll knihovna pouziva model COM, pak musi byt 
registrovana -- napriklad pomoci regsvr32. Tento program 
je urcite soucasti systemu Windows, ale nebyva nekdy 
v adresari, ktery je uveden v ceste. Ma asi 10 KB a v zasade
pouze knihovnu nacte (LoadLibrary()), zjisti, zda definuje 
funkci s vyhrazenym jmenem (GetProcAddress(..., "DllRegisterServer"))
a pokud ano, spusti ji. Vysledkem je zaznam ve Windows Registry, 
ktery mimo jine obsahuje i plne jmeno (i s cestou) takto
zaregistrovane knihovny.

Registrace se provadi takto:

    regsvr32 knihovna.dll

Pokud by to nebyla knihovna s COM komponentou, pak to zahlasi
asi ze to nenaslo vstupni bod DllRegisterServer nebo neco
takoveho. Rozhodne se tim pokusem o registraci nic nepokazi.

> No, ten program [regsvr32] existuje, ale to pokud vim neznamena, ze bez 
> jeho pouziti neni mozne pouzivat DLL knihovnu. DLL knihovna
> musi byt pokud vim nekde, kde ji system najde. 

Toto plati obecne. Pokud ale Dll implementuje komponentu (COM),
musi se zaregistrovat. System by knihovnu sice nasel, ale bez
registrace by byla nepouzitelna.

Berkley DB XML jsem sice nepouzival, ale je to relativne novy 
produkt (pro Windows 2000 a XP) a ocekaval bych, ze Dll knihovny
budou potrebovat zaregistrovat. Obvykle se tak stane pri spusteni
instalaciho programu, protoze to, co dela regsvr32 lze jednoduse
naprogramovat do kazdeho programu. Krome Dll ale Berkley DB XML
uziva asi i nejake staticky linkovane knihovny, ktere musi byt
prilinkovany k cilove aplikaci po jejim prekladu.

Petr

-- 
Petr Prikryl (prikrylp at skil dot cz) 



Další informace o konferenci Python