[#1] Korzystanie z dwóch różnych wersji biblioteki.
Witam. Mam może nie typowe pytanie. Czy jest możliwość aby program skorzystał z innej biblioteki niż ta która znajduje się w LIBS? Dla przykładu w LIBS mam bibliotekę xyz.library w wersji 2.0 i wszystkie programy jakie posiadam, używające tej wersji działają z nią dobrze. Jednakże znalazł się jeden rodzynek, tj. jakiś tam program XXX który lepiej działa z tą samą biblioteką, ale w wersji 1.0. Pytanie jak teraz zrobić aby owy program sięgnął po nią na przykład do PROGDIR, lub do innej wskazanej lokalizacji? Myślałem nad poleceniem RESIDENT użytym w skrypcie uruchamiającym mój program. Natomiast po jego wyłączniu ponownie to polecenie wyrzucało by tą bibliotekę z pamięci.

Ostatnia aktualizacja: 12.12.2022 21:59:08 przez Ponki1986
[#2] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #1

Zobacz SnoopDos'em, czy przypadkiem ten Twój program nie szuka tej biblioteki w swoim katalogu a jak nie znajdzie to dopiero w Libs'ach. Niektóre programy tak robią, wtedy wystarczy wrzucić bibliotekę do katalogu z programem.
3
[#3] Re: Korzystanie z dwóch różnych wersji biblioteki.

@dolek, post #2

Myślałem, że wszystkie programy tak robią. Chyba, że ktoś jakoś strasznie chce być mądrzejszy od systemu operacyjnego i coś nakombinuje.

Specyficzną dla danego programu wersję biblioteki należy raczej wrzucić do PROGDIR:Libs, nie do PROGDIR: (jak to robią na przykład programy pod Windows i w katalogu z plikiem wykonywalnym mają tonę plików DLL).
[#4] Re: Korzystanie z dwóch różnych wersji biblioteki.

@MDW, post #3

To zadziała, ale chyba nie będzie możliwe załadowanie innej wersji biblioteki, jeśli jakaś jest wciąż otwarta.
[#5] Re: Korzystanie z dwóch różnych wersji biblioteki.

@wali7, post #4

Avail Flush nie pomoże?
[#6] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #5

Jeżeli biblioteka ma licznik otwarć wyższy od zera, to żadne działanie zgodne z systemem (tzn. niebędące hackiem) nie wyrzuci jej z pamięci.
A licznik otwarć jest wyższy od zera, gdy jakiś proces otwarł bibliotekę i jej nie zamknął.

Ostatnia aktualizacja: 12.12.2022 23:15:55 przez wali7
[#7] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #1

Mozesz sprobowac zamienic nazwe tej starszej biblioteki z xyz.library na abc.library. Potem wyedytowac ten program i abc.library, tak zeby wszystkie teksty "xyz" zastapic "abc". Powinno zadzialac.
[#8] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #5

Albo coś takiego zamiast Avail Flush:
http://aminet.net/package/util/misc/sysflush-amigaos3
1
[#9] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #1

btw. a co to za biblioteka? moze autor żyje i moglby ją poprawić?
[#10] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Don_Adan, post #7

Ale po co tak kombinować? Jak pisałem, jeżeli jakiś proces wczytał (i nie zamknął, bo wciąż działa w tle) bibliotekę to AmigaOS nie będzie próbował jej otwierać z dysku (bo ma ją w pamięci! Na tym polega przecież idea współdzielonych bibliotek), tylko zwiększy liczbę otwarć o jeden i przekaże programowi wskaźnik na tę otwartą wcześniej bibliotekę. Więc zmiany nazwy nic nie dadzą.
O wiele bardziej eleganckim rozwiązaniem jest zrobienie tego co chłopaki wyżej proponowały: skoro system szuka zawsze (o ile nie jest podana konkretna ścieżka) biblioteki najpierw w progdir: (nie jestem pewien czy musi tam być libs/ ), a dopiero potem w libs: , to tę wymaganą bibliotekę należy umieścić w katalogu tego właśnie programu. A ograniczenie jest takie samo jak poprzednio: jeżeli ta biblioteka już została otwarta przez inny proces w jakiejś innej wersji (np. z libs), to system nie będzie jej szukał na dysku. Ale to jest rozwiązanie bardziej eleganckie, jeśli to nie jest jakaś popularna biblioteka w rodzaju asl, czy reqtools, to jest spora szansa, że nic wcześniej nie otworzy tej innej wersji
[#11] Re: Korzystanie z dwóch różnych wersji biblioteki.

@wali7, post #10

Jak nic nie da? To beda wtedy DWIE ROZNE BIBLIOTEKI w systemie, z roznymi nazwami, ale dzialajace tak samo. Licznik otwarc i zamkniec bibliotek bedzie/jest osobny dla kazdej z tych dwoch bibliotek. To ze otworzysz biblioteke starsza z PROG:LIBS, nie oznacza wcale, ze jak inny program, ktory korzysta z tej samej biblioteki bedzie chcial ja otworzyc w nowszej wersji z LIBS: to nie bedziesz mial wtedy jakiegos konfliktu. Jedynie jezeli to jest jakas biblioteka, ktora jest prawie nieuzywana to rozwiazanie z PROGDIR:LIBS ma sens, ale w to akurat watpie. Jest jeszcze jedna mozliwosc, zrobic nowa wersje tej biblioteki, tak zeby wszystko dzialalo jak chce autor watku, ale to nie zawsze jest mozliwe.

Edycja, widze ze nie zrozumiales do konca pomyslu. Nie chodzi o sama zmiane nazwy biblioteki jako pliku. NAZWA WEWNETRZNA biblioteki musi byc tez zmieniona.

Ostatnia aktualizacja: 13.12.2022 03:08:22 przez Don_Adan
[#12] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Don_Adan, post #11

Oczywiście można, jak pisałeś, próbować przeedytować binarkę programu zmieniając ciągi znaków abc.library na xyz.library (czyli hack, może się uda, może nie, może program będzie działał dobrze, ale tylko częściowo... jak to z hackami bywa), albo znaleźć autora programu i namówić na zrobienie aktualizacji....



Ostatnia aktualizacja: 13.12.2022 11:08:18 przez wali7
[#13] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #1

Już śpieszę z odpowiedzią co to za biblioteka, bo pytanie było czysto teoretyczne i nie sprawdzone w praktyce.

agl.library

Zaciągłem z Aminetu różne demka prezentujące możliwość OpenGL/Warp3D. Do tego StormMesa i Wazp3D z bibliotekami preferowanymi dla WinUAE. Generalnie wszystko działa elegancko, prawie. Z wersją 2.5 wszystko jest wyświetlane dobrze, ale czasami lubi się jakieś GURU wpakować. Natomiast z wersją 4.5 nie ma żadnego GURU, demo GLExcess działa o wiele szybciej, ale nie które drobne demka jak choćby Atlantis otwiera puste okno, widać tylko tło.

Spróbowałem wrzucić bibliotekę do PROGDIR, uprzednio kasując ją w LIBS i działa. Program najpierw szuka jej obok siebie. Dodatkowo działa AVAIL FLUSH, gdzie po wykonaniu polecenia otwiera się okienko komunikatu z tekstem w stylu "Soft3D removed", czy jakoś tak.
[#14] Re: Korzystanie z dwóch różnych wersji biblioteki.

@Ponki1986, post #13

robisz tak, w kazdym programie robisz katalog libs pakujesz do niego te biblioteka ktora lepiej dziala. do kazdego programu dorabiasz skrypt

assign libs: libs add
tu urruchamienie programu
avail flush

wywalasz z glownych libsow tę bibliotekę

uruchamiasz z ze skryptu (daj moze iconx albo ustaw bit +s)

Ostatnia aktualizacja: 13.12.2022 14:46:56 przez michal_zukowski
[#15] Re: Korzystanie z dwóch różnych wersji biblioteki.

@michal_zukowski, post #14

Chyba nie trzeba dawać assign, program powinien zacząć szukać od progdir:libs, a z assignem będzie tam także szukał przy kolejnych programach, a tego chyba nie chcemy. Ew. w skrypcie po uruchomieniu programu można by dać assign kasujący tę ścieżkę.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem