Probleme beim Importieren von Bibliotheken in mein C++-Projekt, wie kann ich das beheben?
Lesezeit: 2 Minuten
πάντα ῥεῖ
Ich benutze die <XZY> IDE, um mein Programm zu kompilieren, und habe einige Probleme, eine bestimmte Bibliothek damit zu importieren/integrieren.
Ich bekomme Fehlermeldungen wie
fatal error: 3rdPartyLib.h: No such file or directory
Für ein
#include "3rdPartyLib.h"
Aussage
ld.exe: cannot find `lib3rdParty.a`
zum spezifizieren
3rdParty
in den Zusatzbibliotheken
Zumindest habe ich eine Fehlermeldung wie
undefined reference to `lib3rdParty::foo()'
Was kann ich tun, um das zu beheben?
Es ist ein weit verbreitetes Missverständnis, dass die aktuell verwendete IDE dafür verantwortlich ist, Fehler wie in der Frage angegeben zu erhalten.
Siehe zum Beispiel
c++ lib in zwei gleichen Projekten, eine kann funktionieren, die andere nicht
Problem beim Linken von libxml++- und glib-Bibliotheken mit CodeBlocks IDE für C++ Windows
…
Das Problem hängt fast nie mit der aktuell verwendeten IDE zusammen.
In den meisten Fällen läuft die Lösung darauf hinaus, den Compiler/Linker der eigentlichen Toolchain mit den entsprechenden Pfaden zu versorgen, um nach enthaltenen Headern zu suchen, um Bibliotheken zu verknüpfen.
Eine der wichtigsten anwendbaren Antworten für die Linker-bezogenen Probleme sind
Was ist ein undefinierter Verweis/ungelöster externer Symbolfehler und wie behebe ich ihn?
undefinierter Verweis auf `WinMain@16′
Die meisten gängigen IDEs bieten Funktionen, um dies für ein bestimmtes Projekt zu konfigurieren. Hier sind einige Beispiele
Eclipse-CDT
Pfadeinstellungen einschließen:
Bibliotheks- und Bibliothekssuchpfadeinstellungen
Visual Studio 2013
Code-Blöcke
**DEV C++ (Blutvergießen C++)
Aus ihrer FAQ:
9. Wie kann ich die OpenGL-Bibliothek und andere verwenden?
Alle Bibliotheken, die mit Mingw geliefert werden, befinden sich im Lib-Verzeichnis. Sie werden alle folgendermaßen benannt: lib*.a
Um eine Bibliothek mit Ihrem Projekt zu verknüpfen, fügen Sie einfach Projektoptionen, weitere Optionsdateien hinzu: -lopengl32
Dies dient zum Einschließen der libopengl32.a Bücherei. Um eine andere Bibliothek hinzuzufügen, folgen Sie einfach derselben Syntax: Type -l (L in Kleinbuchstaben) plus den Basisnamen der Bibliothek (Dateiname ohne lib und das .a Verlängerung).
Sie können auch erwägen, a zu setzen -L Option dort, um nach Bibliotheken durchsuchte Verzeichnispfade hinzuzufügen.
Qt-Creator
Um Include-Pfade hinzuzufügen, müssen Sie die .pro-Datei öffnen und dann die Verzeichnisse hinzufügen INCLUDEPATH Variable. Diese Pfade sind durch Leerzeichen getrennt. Referenz kann gefunden werden Hier.
Wenn keines der oben genannten Beispiele auf Ihre tatsächlich verwendete IDE/Toolchain zutrifft, können Sie hoffentlich den Punkt der Abstraktion verstehen:
Es ist ein Problem, wie Sie Kompilierungs-/Verknüpfungsoptionen für Ihre tatsächliche Toolchain bereitstellen. Die zum Einrichten des Kontexts verwendete IDE ist hier ein untergeordneter Punkt.
Galik
Zum Finsternis Ich verwende das pkg-config Plugin wo möglich: