mam dowolny program o nazwie X w tbxl, może być np. 10 ? "sdfsdf" kompiluję go kompilatorem, linkuję linkerem z runtimem i jako wynikowy program mam X.COM. jeżeli uruchamiam go z pod DOS'a wszytsko jest ok. jeżeli uruchamiam go za pomocą komendy BRUN w dowolnym programie w TBXL mam "zawieszkę". Dla programików nie powstałych jako kompilacja+linkowanie z runtime'em tbxl komenda działa. Dlaczego? z góry dziękuję za pomoc.
Prawdopodobnie biblioteki, które linkujesz ze skompilowanym programem zajmują w pamięci RAM to samo miejsce co interpreter Turbo Basica XL. W związku z tym zamazują w czasie ładowania kod interpretera i stąd zawsze w takiej sytuacji będziesz miał zwis.
dzięki ale ja wywołuje skompilowany i zlinkowany program X, z inego skompilowanego i zlinkowanego programu - nie potrzebuję zatem interpretera w pamięci. przypuścimy że linkuję obiekt CTB tylko z runtime.com - nie ma żadnych innych bibliotek. Dostaje wtedy strasznie dziwny błąd - ERROR 130 in ZEILE 65536 (?!) - taki TBXLOWY klimat - tylko skąd ten błąd w takiej dziwnej linii. Co więcej ponowienie (czyli komenda RUN) właściwie działa poprawnie i zgodnie z oczekiwaniami. Tak jakby program wywoływany się zawieszał, a nie program z którego coś wołam.
1.Bibliotekę wczytujesz tylko raz, z pierwszym uruchamianym programem. Kolejne programy w TBXL wystarczy tylko skompilować. Nie trzeba i wręcz nie można ich znów łączyć z bibioteką RUNTIME! Bo po co? Wystarczy, że raz została wczytana. 2.Kolejne skompilowane programy wczytujemy instrukcją RUN"D:nazwa.CTB", a nie BRUN! Ta ostatnia służy do wczytania i uruchomienia pliku dosowego, a plik CTB takim nie jest! 3.Nie ma potrzeby w ogóle łączyć biblioteki z programem. Plik RUNTIME.COM ma wbudowany mechanizm automatycznego odczytu skompilowanego programu CTB! Wystarczy, że nasz program nazwiesz "AUTORUN.CTB". Biblioteka też może byc uruchomiona automatyczne (w DOS 2.5 trzeba zmienić nazwę na AUTORUN.SYS, w DOS II wykonać polecenie JOB RUNTIME.COM, a w MyDOS zmienić rozszerzenie na *.AR0) i wtedy wszystko ładnie się po kolei uruchamia. Linkowanie programu z biblioteką ma sens, gdy chcemy mieć program w jednym pliku. Gdy i tak całość się doczytuje, to linkowanie biblioteki traci sens.
tak, oczywiście masz rację - linkowanie kolejnych części to strata np. miejsca na dysku i mija się z celem, ale w ogólności sytuacja może być inna. niekoniecznie zawsze możesz mieć CTB, możesz mieć od innego dostawcy zlinkowany program i z powodu x chcesz po porstu użyć BRUN. nie rozumiem właśnie dlaczego wręcz nie można tego robić i powoduje to tecnicznie problemy.