1.Funkcje kodowane w dll muszą mieć odpowiednią konwencję wywołań.kowal pisze: Tak jak wspomniałem wcześniej WinApi dopiero się uczę, a DLL jest prawie na końcu podręcznika więc tak za wczasu zapytam: czy pisząc "Zrób sobie w c dlla" miałeś na myśli C++ czy czysty C. Jest to o tyle istotne, że nie wiem, czy w takim DLL-u moge korzystać z operatora new i delete czy muszę stosować funkcję malloc do dynamicznego alokowania pamięci? - W moim przypadku jest to dość istotny aspekt programowania bo często z niego korzystam
2.Bibliotekę możesz napisać używając wszelkich mechanizmów oraz std z C++ , funkcje eksportowane muszą być jednak oznaczone jako extern "C" co zapobiegnie "maglowaniu" nazw funkcji które wtedy nie będą rozpoznawane od strony innych aplikacji jeśli będziesz próbował ładować dynamicznie dll.Niektóre środowiska programistyczne dodają mimo to swoje znaczniki do takich funkcji więc należy sprawdzić w opisie.
3.Zarządzanie pamięcią w dll może być trudne , chyba że używasz dll na jednym wykresie .Zmienne globalne w przypadku gdy użyjesz np. EA na kolejnym wykresie które korzysta z tej biblioteki zostaną nadpisane ,czyli jeden wykres będzie mieszał w danych innego wykresu - Nie możesz więc w prosty sposób zarządzać pamięcią dynamicznie i statycznie poprzez zmienne globalne.Należy to rozwiązać pisząc odpowiedni kod (uwzględniający zachowanie dll w Win) lub stosując zmienne umieszczone w sekcji TLS .
Jakie są dyrektywy dla kompilatorów i sposoby użycia TLS zależy od środowiska w którym tworzysz bibliotekę.
Pisanie złożonych dll wymaga poznania mechanizmów systemu dotyczących sposobu komunikacji aplikacji z dll i dostępnych funkcji WinAPI.
Ps.Nie męcz buły tylko pisz kod.