Wie packen Sie ein Visual Studio C ++ - Projekt zur Veröffentlichung?

Translate

Ich frage mich, wie man einen Release-Build erstellt, der alle erforderlichen DLL-Dateien in der EXE-Datei enthält, damit das Programm auf einem Nicht-Entwicklungscomputer ausgeführt werden kann, ohne dass Microsoft Redistributable auf dem Zielcomputer installiert werden muss.

Andernfalls erhalten Sie die Fehlermeldung, dass die Anwendungskonfiguration nicht korrekt ist, und müssen neu installiert werden.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate
  1. Wählen Sie Projekt -> Eigenschaften
  2. Wählen Sie Konfiguration -> Allgemein
  3. Wählen Sie im Feld, wie Sie MFC verknüpfen sollen, die statische Verknüpfung aus.
  4. Wählen Sie Linker -> Eingabe. UnterZusätzliche AbhängigkeitenFügen Sie alle Bibliotheken hinzu, in die Ihre App statisch verknüpft werden soll.
Quelle
Trista Lee
Translate

Sie müssen die Laufzeitbibliothek (unter C / C ++ -> Codegenerierung) für ALLE Projekte auf statische Verknüpfung einstellen, die mit den folgenden Standardkonfigurationen für Gebäude korreliert:

  • Multithread-Debug / Release
  • Singlethreaded Debug / Release

Im Gegensatz zu den "DLL" -Versionen dieser Bibliotheken.

Selbst wenn Sie dies tun, müssen Sie abhängig von den verwendeten Bibliotheken möglicherweise ein Zusammenführungsmodul / Framework / etc. Installieren. Dies hängt davon ab, ob statische LIB-Versionen Ihrer Abhängigkeiten verfügbar sind.

Quelle
Translate

Beachten Sie, dassMicrosoft empfiehlt nicht, die Laufzeit statisch mit Ihrem Projekt zu verknüpfenDies verhindert, dass es von Windows Update gewartet wird, um kritische Sicherheitslücken zu beheben. Es gibt auch potenzielle Probleme, wenn Sie Speicher zwischen Ihren .exe- und .dll-Hauptdateien übergeben, als ob jede dieser statischen Verknüpfungen die Laufzeit verknüpft, die zu Problemen mit malloc / free mismatch führen kann.

Sie können die DLLs in die ausführbare Datei aufnehmen, ohne sie in die EXE-Datei zu kompilieren und ohne das Redist-Tool auszuführen - das mache ich und es scheint gut zu funktionieren.

Der einzige Vorteil der Salbe besteht darin, dass Sie die Dateien zweimal einschließen müssen, wenn Sie sie für eine Vielzahl von Windows-Versionen verteilen. Neuere Betriebssysteme benötigen die Dateien in manifestdefinierten Verzeichnissen, und ältere möchten alle Dateien im Programmverzeichnis .

Quelle
Translate

Sie würden nach statischen Links suchen (im Gegensatz zu dynamischen Links)

Ich bin mir nicht sicher, wie viele der MS-Redistributables statisch verknüpft sind.

Quelle
Translate

Wenn Sie herausfinden möchten, welche DLL auf Ihrem Zielcomputer fehlt, verwenden Sie abhängige.exe, die früher mit MSDev geliefert wurde, aber auch gefunden werden kannHier. Wenn Sie dies auf einigen Zielcomputern testen, sollten Sie feststellen, welche DLLs Sie mit Ihrer Anwendung verpacken müssen.

Quelle