Da das Einbinden von externen Libraries mit C++ und Visual Studio eigentlich ziemlich simpel ist, jedoch fast nirgends gut erklärt wird, werde ich mich einmal daran versuchen ;)

Besonders in der Spieleentwicklung, aber auch im normalen Alltag eines C++-Programmierers wird dieser Prozess oftmals benötigt. In diesem Beispiel werde ich dies anhand der FreeImage-Library für das Laden von Bildern und Texturen erklären. Diese liefert sowohl eine statische (lib) und eine dynamische Library (dll) als auch ein Headerfile. Allesamt müssen für unser Projekt eingebunden werden, um die Funktionalität zu nutzen.

In den Projektordner damit

Wichtig ist, dass die entpackten Dateien immer im Projektordner anzufinden sind. Denn sollte das Projekt einmal unkompiliert auf einen anderen Rechner verschoben werden, so wären die ganzen Verlinkungen zu den Libraries in den Systemordnern fort.

Also, zunächst wird einmal FreeImage (unter FreeImage DLL) heruntergeladen und anschließend entpackt. Dort befindet sich ein Ordner namens „Dist“, in dem ihr die .lib, .dll und .h findet.

Für diese Files legt ihr nun in eurem Projektordner, wo sich all eure .cpp-Dateien befinden, zwei Ordner an: „lib“ und „include“. In den lib-Ordner verschiebt ihr logischerweise die FreeImage.lib und in den include-Ordner die FreeImage.h. Die FreeImage.dll könnt ihr entweder zu euren .cpp-Files oder zur .exe ins Debug- bzw. Release-Verzeichnis legen. Am Ende sollte dies wie auf dem folgenden Screenshot aussehen:

Zielordner der entpackten Library

Das lib-Verzeichnis ins Projekt einbinden

Damit der Linker auf die Bibliothek zugreifen kann, muss diese in den Eigenschaften des Projekts eingetragen werden. Dies kann teilweise auch direkt im Code passieren, aber konzentrieren wir uns fürs erste lieber darauf, dass es überhaupt läuft ;)

Zunächst öffnet ihr euer C++-Projekt mit Visual Studio 2010. Mit Rechtsklick auf das Projekt im Projektmappen-Explorer gelangt ihr zu den Eigenschaften. Ihr habt nun zwei Möglichkeiten, um Visual Studio den Pfad zu euren Libraries mitzuteilen.

1. Ins VC++-Verzeichnis eintragen

Dieser Lösungsweg verändert die Systempfade in denen VC++ nach Libraries sucht. Geht hierfür zu Konfigurationseigenschaften > VC++-Verzeichnisse. Dort geht nur nun bei Bibliotheksverzeichnisse auf „Bearbeiten“, fügt eine neue Zeile hinzu und gebt den Pfad zum lib-Ordner in eurem Projekt an.

Pfad unter VC++-Verzeichnisse angeben

2. In den Linkereigenschaften eintragen

Dieser Lösungsweg bearbeitet direkt den Linker für die Projektinstanz. Geht hierfür zu Konfigurationseigenschaften > Linker > Allgemein. Hier geht ihr nun genauso bei „Zusätzliche Bibliotheksverzeichnisse“ auf „Bearbeiten“, fügt eine neue Zeile hinzu und gebt den Pfad zum lib-Ordner in eurem Projekt an.

Pfad in den Linker eintragen

Die FreeImage.lib selbst ins Projekt einbinden

In beiden Fällen müsst ihr nun noch die FreeImage.lib selbst einbinden. Dies geschieht unter Konfigurationseigenschaften > Linker > Eingabe. Hier geht ihr jetzt bei „Zusätzliche Abhängigkeiten“ auf „Bearbeiten“ und fügt pro Zeile den Verweis auf die .lib-Datei selbst an den vorher angegeben Pfaden hinzu:

FreeImage.lib selbst einbinden

Headerfile FreeImage.h einbinden

Im Prinzip braucht ihr dazu einfach nur mehr folgendes in der entsprechenden Datei zu schreiben:

#include "include/FreeImage.h"

Jedoch geht es auch schöner, so dass ihr direkt einen Verweis im Projekt setzt und die Header-Datei wie einen Systemheader aufrufen könnt:

#include <FreeImage.h>

Genauso wie bei der Library gibt es hierfür wieder zwei Möglichkeiten.

1. Abermals ins VC++-Verzeichnis eintragen

Geht hierfür zu Konfigurationseigenschaften > VC++-Verzeichnisse. Dort geht nur nun bei Includeverzeichnisse auf „Bearbeiten“, fügt eine neue Zeile hinzu und gebt den Pfad zum include-Ordner in eurem Projekt an.

Include-Pfad bei VC++ eintragen

2. Den C/C++-Einstellungen zeigen wo es lang geht

Dieser beschäftigt sich wieder mit der Projektinstanz selbst. Geht hierfür zu Konfigurationseigenschaften > C/C++ > Allgemein. Hier geht ihr nun bei „Zusätzliche Includeverzeichnisse“ auf „Bearbeiten“, fügt eine neue Zeile hinzu und gebt den Pfad zum include-Ordner in eurem Projekt an.

Pfad bei C/C++-Eigenschaften eintragen

Wie bereits erwähnt, könnt ihr danach die FreeImage.h folgendermaßen ins ensprechende File einbinden:

#include <FreeImage.h>