Ich möchte zwei C ++ - Projekte in derselben Lösung in Visual Studio 2010 erstellen, die miteinander interagieren können. Ich habe eine Lösung im Verzeichnis C:\Users\me\Desktop\SolutionDir
erstellt. Die beiden Projekte wurden jeweils unter C:\Users\me\Desktop\SolutionDir\FirstProject
und C:\Users\me\Desktop\SolutionDir\SecondProject
erstellt.
Mein erstes Projekt enthält zwei Dateien, einen Header function.h
und eine cpp Datei function.cpp
Mein zweites Projekt enthält die Hauptdatei main.cpp
Ich habe das Verzeichnis C:\Users\me\Desktop\SolutionDir\
in meinem SecondProject Configuration Properties > C/C++ > General > Additional Include Directories
hinzugefügt. Ich bekomme immer noch den klassischen Fehler: error LNK2019: unresolved external symbol
beim Aufruf der Funktion print_stuff()
.
Irgendwelche Ideen?
Versuchen Sie, das erste Projekt als statische Bibliothek unter Projekteigenschaften / Konfigurationseigenschaften / Allgemein / Konfigurationstyp zu erstellen.
Dann müssen Sie in Ihren Projekteigenschaften für das zweite Projekt zwei Dinge ändern:
.lib
des ersten Projekts erstellt wird. .lib
-Datei wie FirstProject.lib
oder wie auch immer der Name lautet, zu zusätzlichen Abhängigkeiten hinzufügen. Ja, Sie müssen die Funktionen mit _declspec(dllexport)
exportieren und sie in das Projekt importieren, das die Funktionen mit _declspec(dllimport)
aufruft.
Diese Dualität wird normalerweise mit einem Makro erreicht:
%Vor% In der Konfiguration Ihres ersten Projekts fügen Sie FIRST_PROJECT_BUILD
zu Ihren Präprozessordirektiven hinzu. Wenn Sie das erste Projekt kompilieren, teilen Sie dem Compiler mit, dass die Funktion exportiert werden soll. Wenn Sie die Datei jedoch in ein anderes Projekt einfügen, für das FIRST_PROJECT_BUILD
nicht definiert ist, teilen Sie dem Compiler mit, dass die Funktion in einer anderen Bibliothek implementiert ist und importiert werden sollte.
Zusätzlich zu den zusätzlichen Include-Pfaden müssen Sie die generierten .lib
-Dateien aus den Projekten, die die Funktionen implementieren, zur Registerkarte Extra dependencies
in den Liner-Einstellungen Ihrer Projektkonfiguration hinzufügen.
Sie können einen RealPath für Ihr Include-Verzeichnis einschließen! Wie für Ihr FirstProject enthalten "./../" Und das gleiche gilt für Ihr zweites Projekt wie dieses können Sie Ihr Verzeichnis SolutionDir verschieben oder kopieren und es wird immer funktionieren!
Für Ihre ungelösten Links müssen Sie die function.cpp und function.h in Ihrem ersten und zweiten Projekt hinzufügen Sie können es in SolutionDir platzieren! So haben Sie immer zwei Dateien für Ihr erstes und zweites Projekt statt vier!
Ich hoffe, es hilft!
Tags und Links c++ visual-studio-2010 include unresolved-external multiple-projects