Um auf Funktionen aus einer benutzerdefinierten Bibliothek zugreifen zu können, sollten Sie diese Bibliothek am besten in eine .h- (oder .hpp-) und eine .cpp-Datei aufteilen. Ich verstehe, dass Sie dies tatsächlich getan haben, aber verschiedene Optionen ausprobiert haben – darunter auch das Einbinden der .cpp-Datei – um eine Lösung zu finden.
Dennoch sollten die Deklarationen von Funktionen und Klassen zur Sicherstellung des erwarteten Verhaltens in die .h-Datei geschrieben werden, am besten geschützt durch etwas wie
#ifndef MY_H_FILE
#define MY_H_FILE
/* ..Deklarationen.. */
#endif
Dann, um die .h-Datei einzubinden (ich gehe davon aus, dass sie my.h heißt), verwenden Sie entweder
#include "my.h" // Pfad relativ zum Build-Verzeichnis
oder
#include // Pfad relativ zu einem der Include-Pfade
Letzteres funktioniert nur, wenn my.h auf einem zuvor dem Compiler bekannten Include-Pfad gefunden wird (z. B. was mit der -I
Befehlszeilenoption in GCC angegeben wird). Ersteres funktioniert, wenn der Pfad zur .h-Datei relativ zum Verzeichnis ist, von dem aus Sie kompilieren.
Verwenden Sie schließlich keinen Dateinamen, der mit einer Systembibliothek verwechselt werden kann (wie z. B. "math.h"), insbesondere wenn Sie die <...>
-Syntax verwenden, da der Include-Pfad definitiv die Headerdateien der Systembibliothek einschließen wird.