2017-09-29 9 views
1

Ich möchte zwei Projekte in C++ verknüpfen. Insbesondere möchte ich eine Funktion von Projekt1 in Projekt2 aufrufen. Ich habe den richtigen Code geschrieben, um diese Projekte zu verlinken, aber ich muss verlinken und Makefiles (zusammen bauen)? Oder nicht? Wie baue ich dieses Projekt jetzt? Wenn ich "make" in project2 aufruft, muss das "make" in project1 aufrufen?So verknüpfen Sie zwei Projekte in C++

danke!

Antwort

0

Ich denke, was Sie wollen, ist eine Makefile-Abhängigkeit? Zum Beispiel:

in makefile1:

all: 
    gcc my_file.c -o libMyLib.a 

in makefile2:

all: my_file.c 
    gcc main2.c -o MyProg.exe 

Wenn Sie die Funktion in Ihrem Projekt1 ändern (my_file.c) und rufen make auf project2 wird es bemerken, dass my_file.c hat seit dem letzten Build von project2 geändert und neu erstellt.

Wenn project2 auf das Ergebnis von project1 (d. H. libMyLib.a; nicht nur auf der .c-Datei) angewiesen ist, müssen Sie beide make beide. Sie könnten einfach anrufen make auf project1 von makefile2, zum Beispiel:

makefile2:

all: libMyLib.a 
    $(MAKE) all -C /path/to/project1 
    gcc main2.c -o MyProg.exe 
0

Beide Projekte sind "binäre"? oder "statische"/"dynamische" Bibliothek? Wenn beide Projekte binär sind, können Sie sie nicht verknüpfen, weil zwei "Haupt" -Funktionen definiert sind.

Wenn beide Projekte nur Funktionsdefinitionen sind, erstellen Sie sie als gemeinsam genutzte Bibliothek und erstellen Sie dann neue Binärdateien mit diesen gemeinsam genutzten Bibliotheken.

+0

das Projekt haben zwei Haupt (eins für einander), aber ich möchte nur Funktion aus dem zweiten Projekt ohne die Hauptfunktion aufrufen. – Christ

Verwandte Themen