Nie pomogę z tymi konkretnymi bibliotekami, ale generalnie zasada jest taka, jeśli to zrozumiesz co napiszę, będziesz mógł sobie podłączyć co zechcesz:
pobierając jakieś SDK, czy bibliotekę masz tam 2 rodzaje plików:
-pliki nagłówkowe *h. lub *.hpp (często w SDK folder nazywa się include)
-pliki *.lib (dla gcc *.a) (często w SDK folder nazywa się lib, mogą być wersje x64 i x86) + ewentalne pliki *.dll, które te lib reprezentują (często w SDK folder nazywa się bin)
Pobierając i wypakowując SDK/bibliotekę, aby używać jej w projekcie C++ musisz dodać w opcjach projektu folder, którym znajdują się te pliki, oddzielnie dodaje się foldery plików nagłówkowych, a oddzielnie foldery z plikami lib.
Np. w Visual C++ 2010, aby dodać folder plików nagłówkowych wybierasz: opcje projektu -> C/C++ -> General -> Additional Include Directories i tam dodajesz sobie folder ściągniętej biblioteki z jej plikami nagłókowymi (często nazywa się include(s))
Ten sam krok dla plików lib, w Visualu C++ 2010: opcje projektu -> Linker -> General -> Additional Library Directories i dodajesz folder z plikami *.lib ściągniętej biblioteki/SDK.
Tymi dwoma krokami, twój projekt powinien widzieć pliki danej biblioteki. Teraz możesz dołączać w kodzie pliki nagłówkowe danej biblioteki przez #include
#include <plik_biblioteki.hpp>
Tym się różni #include <xx> od #include "xx", że #include<xx.h> szuka plików w dodanych ścieżkach(co uczyniono), natomiast #include "xx.h" szuka plików tylko w folderze projektu, czyli w sumie tych twoich które sam tworzysz w twoim projekcie.
Niektóre prostsze biblioteki, składają się tylko z plików nagłówkowych (np. C++ STL), aczkolwiek coś większego, a już w szczególności SDK czy silniki, składają się jeszcze z plików lib + DLL(opcjonalnie). W plikach nagłówkowych (tych przez include) zawsze zawierają się tylko definicje, np. definicje typów, klas itp.
Kopiuj
typedef int64 long long;
class {
public:
void foo();
};
void foo();
Jednak są to tylko definicje i w przypadku bibliotek z plikami LIB kod ich został już skompilowany przez autorów bibliotek/SDK i znajduje się on albo w całości w pliku *.lib, albo w pliku *.dll, a plik *.lib wtedy jest "łącznikiem", który mówi podczas kompilacji, gdzie co w tym pliku DLL jest.
Wracając do ustawiania projektu, jeśli dołączysz biblioteki nagłówkowe (kompilator będzie już znał definicje) wtedy już projekt powinien się kompilować, ale jeśli użyjesz jakiejś funkcji/metody z biblioteki, czyli zdefiniowanej w dołączonych plikach nagłówkowych - dostaniesz błąd na etapie linkowania jakiś taki:
error LNK2001: unresolved external symbol "void __cdecl foo(void)"
czyli w skrócie "nieznaleziony symbol", chodzi po prostu o to, że nigdzie nie ma kodu z tą funkcją/metodą, a to dlatego, że informacja o tym gdzie będzie ten kod jest właśnie w plikach *.lib.
Więc(wiem nie zaczyna się zdania od więc)... A więc, drugim etapem jest dodanie-"podlinkowanie" odpowiednich bibliotek lib, w których będzie kod tych metod/funkcji. Czasem cała biblioteka jest w jednym pliku LIB, czasem projekt jest porozbijany na więcej plików LIB. W każdym razie każda funkcja/metoda biblioteki będzie w jakimś pliku LIB. Żeby pozbyć się komunikatów o "unresolved external symbol", trzeba go dołączyć.
Generalnie można zrobić to na 2 sposoby: w kodzie (w każdy kompilator to obsługuje) lub w opcjach projektu, dodać dodatkowe pliki *.lib
W kodzie zwykle używa się do tego dyrektywy #pragma
np. w Visualu wygląda to tak (w różnych kompilatorach może być różnie):
#pragma comment(lib, "plik.lib") // oczywiście w opcjach musi być dodany folder (o czym było wcześniej) w którym ten plik będzie lub wpisać pełną ścieżkę (mało profesjonalne :>)
Dyrektywę można wstawić w kompletnie dowolnym miejscu w kodzie (chociaż wypada gdzieś na początku, nie?) i tak proces linkowania ma miejsce po właściwej kompilacji kodu.
Drugim sposobem jest dodanie pliku w opcjach projektu i znów w Visualu C++ 2010 wchodzisz: opcje projektu -> Linker -> Input -> Additional Dependencies i tam wpisujesz nazwy linkowanych bibliotek
OK includując pliki nagłówkowe i dołączając pliki LIB już prawie jesteśmy w domu, kompilacja projektu na tym etapie powinna zakończyć się sukcesem. Zostaje jeszcze jedna rzecz. W przypadku jeśli biblioteka jest w postaci pliku DLL, trzeba jeszcze zadbać, aby twoja aplikacja mogła ją znaleźć, w przeciwnym wypadku podczas uruchamiania twojego programu dostaniesz komunikat, że nie można odnaleźć danej biblioteki DLL. Aby twój program ją odnalazł są 2 sposoby:
- (prawie zawsze preferowany) umieścić plik z biblioteką *.dll w folderze roboczym procesu, czyli zwykle w folderze w którym jest exec (acz nie zawsze). Wtedy system ją znajdzie i załaduje
- (zwykle niezalecany) Drugi sposób to umieszczenie pliku *.dll w folderze systemowym (C:Windows czy C:Windows\system32 lub WOW64), tam także szuka DLLek.
To w sumie tyle, czasem w przypadku większych silników, itp. aby wszystko dobrze działało trzeba jeszcze porobić różnego rodzaju pliki konfiguracyjne, ale to już wynika z kodu i jego działania, który jest tej bibliotece. Ale to wszystko będzie już w dokumentacji danej biblioteki/SDK.