Ich verwende Visual Studio seit einiger Zeit, hauptsächlich für C++. Ich war oft in der Notwendigkeit, Lösungen zu erstellen, die mehrere Module (Projekte) enthalten - zum Beispiel Dienstprogramm Bibliothek, die aus paar .dll
Dateien bestand.Welche Konsequenzen hat das Hinzufügen von Verweisen auf C++ - Projekt in Visual Studio?
Wenn es einen Bedarf für ein Modul (A) ist eine andere (B) zu verwenden, ist es Standardmuster für diese:
- Fügen erforderlichen Header.
- Verknüpfen Sie die Ausgabebibliotheksdatei mit B (z. B. in VS: Projektkonfiguration ->
Linker
->Input
->Additional Dependencies
->'B.lib'
). - [Optional] Richten Sie die richtige Build-Reihenfolge ein (B wird also vor A erstellt).
Kürzlich begann ich mit C# zu spielen, um, weil ich mit ihm (es ist viel einfacher, als die Verwendung von C++ und externen Bibliotheken wie Qt oder wxWidgets) einige GUI-basierten Tools für meinen Motor zu entwickeln entschieden. Ich habe gelernt, dass in C# werden solche Abhängigkeiten gesetzt mit ‚Referenzen‘:
Ich war sehr überrascht, als ich entdeckte, dass diese Option für C++ Projekte anwendbar ist!
In der Tat, nachdem ich Beispiellösung erstellt und Abhängigkeiten auf diese Weise gesetzt hatte, hat alles gut funktioniert, ohne zusätzliche Konfiguration wie "Linker-Eingabe" oder so etwas.
Meine Frage ist: Was genau macht diese Option für C++ Projekte? Ich bin an allen Gewinnen und möglichen Kompromissen interessiert.
Ich weiß schon, dass es die Verknüpfung der Ausgabe von anderen Projekten als Abhängigkeiten verursacht. Noch etwas? Vielleicht einige Laufzeitabhängigkeiten zwischen referenzierten Modulen? Wie wirkt sich dies auf die generierte Ausgabe aus?
Ein Projektverweis übernimmt automatisch die Ausgabe von der entsprechenden Build-Konfiguration des anderen Projekts (Debug-Bibliothek für Debug-Build der Anwendung usw.). Es wäre ein gutes Stück Arbeit, das manuell einzurichten. –
Da Sie auch DLLs erwähnt haben, wird die Projektreferenz beide Buildausgaben, die .lib-Importbibliothek und die .DLL zur Laufzeit abrufen. –