2010-12-12 14 views
0

Wenn ich zum Beispiel ein Programm erstellen und kompilieren mit MinGW, wenn ich die Umgebungsvariable löschen muss ich die DLL in das Verzeichnis für die Arbeit zu setzenEin Programm nur mit bestimmten DLLs im Verzeichnis

dh. libgcc_s_dw2-1.dll

ohne es wird das Programm nicht einmal starten.

Bei der Entwicklung mit QT bemerkte ich, ich brauchte eine andere DLL in das Verzeichnis, es war QtCored4.dll, ich fragte mich, wie das Programm weiß, dass die DLL fehlt?

Auch ist es trotzdem, so etwas zu einem Programm hinzuzufügen, wie eine Anweisung oder etwas definieren?

Ich brauche eine Antwort, die mit C++ arbeiten kann :)

Antwort

1

die Pflege durch das Betriebssystem genommen wird - da Ihre Programmfunktionen aus dem DLL verwenden, wird es automatisch geladen, wenn das Programm gestartet wird, und wenn die DLL fehlt, Sie erhalten einen Fehler. Sie können mehr über diesen Prozess in MSDN lesen: Load-Time Dynamic Linking.

1

, wenn sie mit QT Entwicklung Ich bemerkte ich eine andere DLL in dem Verzeichnis benötigt, war es QtCored4.dll, ich frage mich, wie das Programm weiß, dass die dll

Sie können versuchen, auch zu laden fehlt die DLL selbst zur Laufzeit und behandeln Fehler fehlerfrei. Siehe LoadLibrary und GetProcAddress.

+0

Besser noch, verwenden Verzögerung laden. Auf diese Weise kümmert sich der Compiler um alle 'GetProcAddress'-Aufrufe, und Sie müssen lediglich Wiederherstellungscode (oder Fehlerberichtscode) bereitstellen, wenn 'LoadLibrary' fehlschlägt. –

Verwandte Themen