Ich habe zwei Quellen, die ich zu einer C statischen Bibliothek kombinieren möchte.Erstellen einer statischen Bibliothek in C
renderay_core.c
renderay_shapes.c
und die entsprechenden Header-Dateien. Ich habe dies zuerst als Standalone (Nicht-Bibliothek) kompiliert, um hier Fehler zu vermeiden.
test.c
#include <stdio.h>
#include "renderay_core.c"
#include "renderay_shapes.c"
int main(void){
Canvas* canvas = new_Canvas(5,5);
printf("Test");
}
es mit kompiliert:
gcc test.c renderay_core.c renderay_shapes.c -o main.exe
und es funktionierte gut.
Jetzt bin ich dran, dies in eine statische lib zu packen. Doing as befored:
gcc -c renderay_core.c renderay_shapes.c
Jetzt habe ich die Objekte bereit, als eine Bibliothek verknüpft werden.
ar rcs librenderay.a renderay_core.c renderay_shapes.c
Ist der Befehl, den ich dafür verwende. Dann versuche ich, meine test.c mit der Bibliothek anstelle der einfachen Quelldateien zu kompilieren.
gcc test.c -o main.exe -static -L -lrenderay
Jetzt, wenn ich versuche, dies zu kompilieren bekomme ich eine Fehlerwarnung:
undefined Verweis auf „new_Canvas“
mir zu sagen, dass die Verknüpfung mit der Bibliothek ist fehlgeschlagen. Was mache ich hier falsch? Was habe ich verpasst?
Erfahren Sie mehr über Header-Dateien. Implementierungsdateien nicht einschließen. – Olaf
Sie scheinen "ar" gegen die C-Quelldateien statt gegen die Objektdateien auszuführen. –