Wenn Sie statisch mit einer DLL verknüpfen, was wirklich passiert, ist, dass der Compiler erkennt, welche DLL-Funktionen Ihr Code aufruft und richtet Stubzeiger ein, die der Linker dann in die IMPORTS-Tabelle Ihrer Anwendung einfügt. Zur Laufzeit, wenn Ihre Anwendung ausgeführt wird, wird der OS Loader zuerst die IMPORTS-Tabelle (unter anderem) patchen, indem er die referenzierten DLLs in den Speicher lädt und dann die Funktionszeiger nach Bedarf aktualisiert. Dies geschieht, bevor der Code in der Anwendung ausgeführt wird. Wenn der Lader eine Referenz nicht auflösen kann, wird ein Fehler angezeigt und der Prozess wird abgebrochen. Die DLL selbst ist nicht in die Anwendung selbst kompiliert. Es muss als externe Datei verbleiben (damit es bei Bedarf mit mehreren Anwendungen/Prozessen geteilt werden kann) und dort installiert werden, wo das Betriebssystemladeprogramm es finden kann. So können DLLs verwendet werden. Keine Menge sich ändernder Projektoptionen wird das ändern.
Wenn Sie möchten, dass Ihr Bibliothekscode direkt in die Anwendung kompiliert wird, müssen Sie eine statische Bibliothek anstelle einer DLL erstellen.
DLL steht für * Dynamic-Link * Library. – Philipp