Posted By: medvidek (Zase za polarnim kruhem) on 'CZprogram'
Title:     Problem s linkovanim pod windows
Date:      Mon Dec  9 15:45:07 2002

Tak uz doslo i na windows. Situace je trochu neprehledna, pokusim se ji popsat.

Mam aplikaci A prelozenou BCB5 (Borland C++ Builder 5). Aplikace A pouziva 
dynamickou knihovnu K, ktera je prelozena MSVC6. Knihovna K ma _globalni_ 
(neexportovanou) instanci tridy, ktera v konstruktoru pres LoadLibrary otvira 
dynamickou knihovnu L prelozenou MSVC6. Knihovna L pouziva knihovnu ole32.dll. 
L je slinkovana s ole32.lib, takze L natahuje ole32.dll automaticky pri svem 
otevreni. 

A ted mam serii zajimavych pozorovani :)

1. Udelam z K.dll import library K.lib pro BCB, prelozim A, spustim. A loadne 
automaticky K, K otevre pres LoadLibrary L, ta automaticky otevre ole32.lib a 
pri otvitrani ole32.lib mam access violation. LoadLibrary zfailuje.

2. Pokud neudelam K.lib, ale otevru v aplikaci A knihovnu K.dll pres 
LoadLibrary, vse projde (L korektne natahne ole32.dll)

Kdybyste mi toto nekdo mohl vysvetlit...

Mam jeste dalsi zajimave veci (komu se to zda moc dlouhe a narocne, dal
nectete). 

3. pokud ta L pouziva ole32.dll, slitne to jen pod XP, pod w2k to jede 
korektne. Pokud ta L pouziva winsock, slitne to pod obouma OS.

4. V K mam jeden exportovany globalni pointer na rozhrani (struktura 
obsahujici jen pointery na fce). Udelam vse podle bodu 2, pak pres 
GetProcAddress ziskam adresu te promenne a zavolam nejakou tu fci. Vysledek - 
padne to na rypak. 

5. Udelam vse jak v bode 4, akorat misto exportovane promenne mam fci, ktera 
vrati ten pointer. V tomto pripade fci zavolam korektne...

Jen doplnim - pokud aplikaci A prelozim v MSVC, jedou vsechny prripady 
korektne.

Jestli nekdo tusite proc to v tom kterem pripade pada, nenechte si 
to pro sebe :) 



                 medvidek

--
         ELVIRA - Extended LSD VoiceXML interpreter for Applications
                       http://www.fi.muni.cz/lsd/elvira
  Engine for building dialog applications        Free for noncommercial use

Search the boards