2012-09-27 13 views
11

Od dawna próbuję tworzyć wtyczki dla kilku aplikacji. Są to zawsze pliki dll i postępuję zgodnie z instrukcjami zawartymi w dokumentacji SDK różnych aplikacji, ale nigdy nie zrozumiałem, co robiłem, .. W celu zaradzenia tym starałem się znaleźć żadnego zasobu, który zajmuje więcej z niektórych praktycznych aspektów programowania w C++, w tym do czynienia z bibliotek DLL, listy od szczytu głowy jest:Prośba o dobre tutoriale w programowaniu dll

  • dll, do czego są używane i dlaczego?
  • dlaczego używać plików dll ponad bibliotekami?
  • o co chodzi w tym pliku .def, czy jest to tylko Microsoft?
  • do czego służy plik manifestu?
  • ...

Zasadniczo, wszystkie te piękne opcji, które można zobaczyć w IDE (Visual Studio i XCxcode dla mnie) - w jaki sposób można dowiedzieć się, czym są i jak z nich korzystać w połączeniu z kod nieco bardziej skomplikowany niż pisanie aplikacji "Witaj świecie"? Chyba szukam bardziej "architektonicznego widoku" na programowanie. Najbardziej dotychczas odkryłem w moich książkach C++, że zawsze jest sekcja o source code > object code > linked w/ other obj code > executable , ale to jest tak daleko, jak to możliwe.

Więc, czy są jakieś dobre książki dla kogoś w moim położeniu chcąc dowiedzieć się więcej, niż tylko składni C++? Wiem o kodzie, wiem o orientacji obiektowej, wiem o STL. Potrzebuję dobrej książki lub zasobu na następny krok.

Dzięki! (I przepraszam, jeśli to trochę niejasne pytanie, ale doszła do tego)

+1

Och dobrze, polecam (imho defacto standardem) http://www.amazon.com/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612/ref=wl_it_dp_o_pC_nS_nC?ie=UTF8&colid=2E0Z6RTE6OPPQ&coliid= I3O54RFCDN6EQN dla "kroku nad światem cześć". W przypadku innych pytań Odpowiedź brzmi: pytanie: czy znasz połączenie statyczne i dynamiczne? – Najzero

+0

Może :) O ile mi wiadomo, dynamiczne łączenie to biblioteki połączone w środowisku wykonawczym (np. Dll), a statyczne są łączone w czasie kompilacji (plik lib). Oczywiście, może to źle, i nawet jeśli jest to poprawne, nie mam dobrej oceny tych wszystkich rzeczy z punktu widzenia architektury systemu. Jeśli to nawet właściwa fraza: D –

Odpowiedz

1

mogę odnosić się do następujących punktów odniesienia. Sprawdź, czy są one dla ciebie użyteczne.

  1. C++ DLL Programming
  2. Assemblies
+0

Dobrze, popatrzę na te - dziękuję bardzo. –

4

Jest doskonałaarticle na CodeProject na programowaniu DLL w C++.

+0

Wygląda bardzo dobrze i dogłębnie. Dziękuję Ci! Jeśli znasz jakieś książki, które obejmują tego rodzaju tematy, to daj mi znać :) –

9

dll, jakie są stosowane i dlaczego?

Pliki dll są identyczne z plikami EXE w systemie Microsoft Windows (z wyjątkiem 1-bitowego nagłówka z informacją, że jest to biblioteka DLL). Pamięć biblioteki DLL jest współdzielona przez dowolny program, który ją wykorzystuje, co pozwala zaoszczędzić pamięć. Pliki Dll mogą być ładowane i rozładowywane z pamięci RAM na żądanie, oszczędzając pamięć. Również mogą być aktualizowane indywidualnie bez konieczności ponownej kompilacji .exe (za które nie może mieć kod źródłowy).

dlaczego używać dll nad bibliotekami?

libs, znane również jako statycznych bibliotek wymagają exe być zrekompilowane każdym razem, gdy dokonywana jest zmiana, dll nie. Biblioteki Dll oszczędzają pamięć, jeśli używa ich wiele procesów i mogą być aktualizowane dla wszystkich programów z centralnej lokalizacji.W przypadku bibliotek musieliby Państwo przekompilować i wymienić każdy plik .exe osobno. Pliki DLL są dodatkowymi plikami, które MUSZĄ być dołączone do pliku exe, więc biblioteki DLL mogą być szkodliwe dla dystrybucji internetowej.

o co chodzi w tym pliku .def, czy jest to tylko Microsoft?

Plik .def jest plikiem specyficznym dla kompilatora, który informuje kompilator, w jaki sposób biblioteka DLL (API) powinna być umieszczona w pamięci. Można je znaleźć w wielu różnych kompilatorach, w tym w gcc, chociaż obsługiwane funkcje i składnia różnią się.

co to jest plik manifestu?

Manifest jest nowością w systemie Windows XP SP3, w zasadzie informuje Windows, jakie wersje bibliotek systemowych potrzebuje, a także czy binarny potrzebuje uprawnień administratora, aby uruchomić. (Pamiętaj, że biblioteka dll jest tylko exe z jednym bitem innym). Uważam, że manfest jest również używany w podpisywaniu kodu, sprawdzając, czy plik wykonywalny jest zgodny z prawem.

+0

Dziękuję - bardzo przydatne rzeczy. Teraz potrzebuję tylko książki, która mówi o tych rzeczach, więc mogę umieścić je w jeszcze szerszym kontekście. –

Powiązane problemy