Posted By: pivson (Pijte pivo, je zdrave !) on 'CZprogram'
Title: Re: Call to undefined dynalink
Date: Mon Dec 31 09:19:21 2001
> Zdar,
>
> mam "obhospodarovat" jednu staru 16-bit aplikaciu, v ktorej niekedy vyskoci
> hlaska "Call to undefined dynalink".
Uzij si to :)
> Zdrojak aplikacie je v Turbo pascale. Niektore DLLka sa linkuju klasicky cky
> cez LoadLibrary a GetProcAddress, niektore sa linkuju "automaticky"
> deklaraciou typu
> funkction XXXX external 'YYY.DLL' index ZZZ;
> a niektore 32-bit DLLka sa linkuju cez sluzby kernelu...
>
> V ktorych pripadoch mozem pocitat, ze vyskakuje ta hlaska ?
> Ako sa vlastne prekladaju volania funkcii deklarovanych pomocou "external
> DLL
> index XXX" ???
Drive MS nepouzival 'jemna' pro exporotovani, to by na ne bylo od zacatku
prilis slozity. Pouzivaly 'indexy'. To jest: jmeno nebylo podstatne, ale ty
indexy. Predstav si ze mas deklarovanou 'fci' ala 'foo()' a dneska linkvoani
probyha tak, ze se pro ni neklaruje (pro MSC) __declspec(dllimport). On z
mena udela __imp___foo_ nebo tak neco a hleda to v lib ktery odkazujou tuhle
fci na prislusny DLL. Drive tomu bylo tak, ze si mel 'definici' DLL ve forme
fce index<novek radek>etc. Bylo to popojeny na urovni cisel. I MS velice brzo
prisel na to, ze (jako obvykle musim rici) udelal peknou blbost a u vetsich
projektu (tedy i MS windoze 3.x) se to neda rozumne udrzet. Pamatovat si
cisla, drzet ty cisla pro zpetnou kompatibilitu a spol takze presli na 'name'
konvenci. Tohle vsechno zpracovava automaticky dll loader - tezko rict, jesli
si tohle dela ta 16 bit app sama nebo ne. Pokud ne, tak by nejaka takova
hlaska mela vyskocit pri nahravani do pametovyo prostuoru. Pokud sama (treba
pro linker je to 'lazy' styl) tak pri konkretnim volani. Najdi si 'depend'
(utilicka na testovani zavisloti knihoven, mssdk nebo msc a bude asi i u
borlandio packalu/c++) - ta ti zobrazi jak jmena tak 'indexy' a zde uvidis,
ze nektery 'polozky' jsou v idnexovaci tabulce prazdny, to jest, ze ty fce uz
dneksa proste neexistujou. Jsou to veci (mimo jin) ala Yeld a spol. Nektery
maj 'pro kompatibilitu' "prazdnou" fci (tedy app budou fungovat), nektery,
vzhledem ke svymu razu proste neexistujou.
Takze cislo je nahrazka jmena. Vice viz 'Depend' (mozna ma s na konci :)
Dneska uz je to pase a snad veskery projekty jedou na name konvenci.
Pivson I a posledni, z bozi vule pivar
A co budou delat cesi ???
Deme na pivo !