En utilisant MSYS, j'ai compilé libpq (à partir de postgres de compilation). J'ai ensuite compilé libpqxx. Maintenant, je veux créer un client qui utilisera libpqxx. libpq semblait fonctionner correctement. Et, je peux compiler du code avec libpqxx. Toutefois, la liaison de l'application client libpq échoue.Impossible de lier libpqxx dans MinGW
Voici mon code:
#include <pqxx/pqxx>
#include <iostream>
using namespace std;
using namespace pqxx;
int main() {
connection Conn("dbname=test");
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
J'ai ajouté un tas de libs sur le lien dans un vain espoir il soudainement travailler. Voici ce que j'ai jusqu'à présent:
g++ -IC:\msys\1.0\local\pgsql\include -IC:\msys\1.0\local\include -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Controller.o ..\src\Controller.cpp g++ -LC:\MinGW\lib -LC:\msys\1.0\local\pgsql\lib -LC:\msys\1.0\local\lib -oController.exe src\Controller.o -lws2_32 -lole32 -lpqxx -lpq -loleaut32 -luuid C:\msys\1.0\local\lib/libpqxx.a(connection_base.o): In function `ZN45_GLOBAL__N__ZN4pqxx16encrypt_passwordERKSsS1_7wait_fdEibP7timeval': C:/msys/1.0/home/rsolomon/libpqxx/libpqxx-3.0.2/src/connection_base.cxx:1434: undefined reference to `[email protected]' C:\msys\1.0\local\lib/libpqxx.a(connection_base.o): In function `ZN4pqxx15connection_base12check_resultERKNS_6resultE': C:/msys/1.0/home/rsolomon/libpqxx/libpqxx-3.0.2/src/connection_base.cxx:420: undefined reference to `[email protected]' collect2: ld returned 1 exit status Build error occurred, build is stopped Time consumed: 1770 ms.
Je pense le -lws2_32 aurait dû m'a donné le « select @ 20 ». Pourquoi l'éditeur de liens est-il si utile?
Wow! Ça a marché. Donc, l'ordre du -l devrait aller des bibliothèques spécifiques que j'utilise d'abord aux bibliothèques les plus transitives? Je suppose que j'ai trouvé ça à la dure. – User1
Aurais-je jamais besoin d'un -l pour la même lib deux fois? – User1
Unix utilise traditionnellement tsort (1) pour calculer l'ordre topologique, même s'il n'est pas largement utilisé ... Dans tous les cas, oui, vous devrez peut-être ajouter des bibliothèques deux fois s'il y a une dépendance cyclique entre bibliothèques - ce que vous ne devriez pas avoir si vos bibliothèques sont correctement empilées. –