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 !