2017-02-20 6 views
-2

Wie ausführbar Funktionen von DLLs genau findet? Ich weiß, dass DLL-Dateien Einstiegspunkte haben, aber wie findet die ausführbare Datei diese Einstiegspunkte mit Namen, da alles innerhalb einer DLL 1s und 0s ist?Wie ausführbar Funktionen aus DLL-Datei findet?

+1

Alles in allen Dateien ist nur 1s und 0s. –

+1

http://stackoverflow.com/questions/124549/what-exactly-are-dll-files-and-how-do-theywork – Anil

+0

DLL-Format ist das gleiche wie EXE so [lesen Sie hier] (https: // msdn.microsoft.com/en-us/library/windows/desktop/ms680547(v=vs.85).aspx) – mpiatek

Antwort

-1

Sie kompilieren für eine bestimmte LIB-Datei, und diese LIB-Datei stammt aus demselben Code, der zum Erstellen der DLL verwendet wird. Wenn Sie das mit genau den gleichen Einstellungen tun, werden die Einstiegspunkte beibehalten und das aufrufende Programm hat diese Einstiegspunkte direkt in den Code eingebaut. Deshalb kann das Kompilieren der DLL mit einer anderen Version von VStudio Dinge ruinieren: Die C-Laufzeitbibliothek und andere Details des späteren VStudio sind nicht identisch, so dass sowohl die DLL als auch die EXE unterschiedliche Eingangspunkte haben. Aber wenn Sie beide auf der gleichen Generation von Tech kompilieren, dann richten sie sich automatisch aus.

+0

Nun, mir wurde immer gesagt, dass es Maschinenanweisungen wie ausführbare enthält. –

+0

Nun ja, aber Sie haben im Grunde eine genaue schematische Darstellung, wo alles aus der .lib-Datei ist, wenn Sie Ihre exe machen, so dass es weiß, wo diese Dinge bereits sind. Dies ist der Grund, warum Sie nicht mit einer DLL kompilieren können, wenn Sie nicht die richtige .lib-Datei in derselben Compilergeneration erstellt haben. –

+0

Also, wenn meine DLL Funktion CreateWindow hat würde es die Anweisungen zum Erstellen von Fenster oder nur den Namen der Funktion enthalten? –