Posted By: pivson (Pijte pivo, je zdrave !!!) on 'CZprogram' Title: Re: Problem s linkovanim pod windows Date: Tue Dec 10 12:47:35 2002 > 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. Co bys cekal ? > > 5. Udelam vse jak v bode 4, akorat misto exportovane promenne mam fci, ktera > vrati ten pointer. V tomto pripade fci zavolam korektne... Tak tak... Exporotvani promennych neni uplne standardni vec, takze byt tebou se tim nezaobiram. Pravdepodobne ma loader bordel v segmentech, pripadne spatne nastavi 'rwx' prava, ci neco podobneho. To by se dalo odsledovat - jesli te to moc zajima, stahni si kernel debuging, zapni si to a 'krokuj' loadlibrary. Pri tom koukej, co ti vypisuje za debug veci. Dalso moznost - neni schopen relokovat 'pozici' promenne, ci odbdobu. Zkus si udelat base adresy tak, aby je loader nemusel vubec relokovat. > Jen doplnim - pokud aplikaci A prelozim v MSVC, jedou vsechny prripady > korektne. Co bys cekal :))) ? CBuilder ma okolo sebe tuny blbosti, asi jako kdyz udelas aplikaci s MFC, ale 10x horsi. Tezko muzes hadat 'jak' si inicializuje globalni promenne, jak vola konstruktory, ... Kazdy z kompileru ma tohle sve 'zpusoby'. Pokud je chces prinutit 'importovat' promenou, pak je otazka, jak se k tomu kompiler zachova. Bude to jen 'pointer' ? Nebo to bude pointer to tabulky pointeru ? (aby nemusel relokovat celej kod po natahnuti DLL). Takze problem dle mne bude v rozdilnem pristupu. Takze se nechovej jako cune a exportuj si funknce, ktere jsou standardizovane :o) Ps: obdobny problem je i s prilinkovavanim DLL funkci, pokud by si sel vice do hloubky... Napr. v Debug buildu MSC (aby se vyhnul relokovani a umoznil edit & continue) tak veskere tridni FCE jsou ve skutecnosti skoky do tabulky... A tak se da pokracovat... Pivson -------------------------------------------------------------------------- In the 1960s you needed the power of two C64s to get a rocket to the moon. Now you need a machine which is a vast number of times more powerful just to run the most popular GUI.