Biblioteka DLL, linkowanie dynamiczne a wywołanie funkcji inicjujących

0

Mam biblioteke DLL którą ładuje sobie dynamicznie, ale w jej dokumentacji piszą, że są dwie funkcje (Init, DeInit) które należy wywołać tylko raz w aplikacji. Pytanie dla wielu banalne: kiedy mam je wywołać, faktycznie tylko raz na aplikacje, czy za każdym razem gdy będę ją ładował i zwalniał?

0

Zależy od tego co autor biblioteki wykombinował. Stawiałbym na to, że po każdym ładowaniu, ale ... Ale mógł wymyślić coś mniej standardowego, a jemu potrzebnego. Bądź przynajmniej zdawało mu się, że potrzebnego :-).

0

[...] ale w jej dokumentacji piszą, że są dwie funkcje (Init, DeInit) które należy wywołać tylko raz w aplikacji.

Jeśli to faktycznie znajduje się w dokumentacji, to raczej wiadome co trzeba zrobić; Najpierw załadować bibliotekę, wywołać Init, następnie aż do końca działania aplikacji z niej korzystać, a przy zamykaniu aplikacji wywołać DeInit i unloadować bibliotekę; Można to wykonać w sekcjach Initialization i Finalization jakiegoś głównego modułu, ewentualnie wywołać z głównego modułu aplikacji (zależnie od projektu);

Przynajmniej ja to tak widzę.

2

Pytanie dlaczego chcesz wielokrotnie ładować i zwalniać tę samą bibliotekę.
Ale prawie na pewno musisz Init i DeInit wywoływać za każdym razem, czyli LoadLibrary, GetProcAddress dla Init, Init, ..., DeInit, FreeLibrary.

0
Azarien napisał(a):

Pytanie dlaczego chcesz wielokrotnie ładować i zwalniać tę samą bibliotekę.
Ale prawie na pewno musisz Init i DeInit wywoływać za każdym razem, czyli LoadLibrary, GetProcAddress dla Init, Init, ..., DeInit, FreeLibrary.

dokładnie o to mi chodziło. Myślałem o finalization i initialization ale mam wrażenie, że i tak musze to zrobić wielokrotnie skoro ładuje biblioteke dynamicznie, i ją zwalniam to nie pozostaje w jej pamięci nic, ponownie musze dać Init.
Wybrałem metode dynamiczną, aby uniknąć błędów, gdyby biblioteki nie było (bardzo droga i płatna) dołączonej do aplikacji (nie wszyscy użytkownicy będą z tego korzystali).

1 użytkowników online, w tym zalogowanych: 0, gości: 1