2012-02-23 5 views
1

j'ai essayé de compiler le module mongodbbackend pour powerdns mais je suis coincé avec ce problème:powerdns + MongoDB

In file included from mongodbbackend.cc:18: 
mongodbbackend.hh: At global scope: 
mongodbbackend.hh:109: error: ISO C++ forbids declaration of ‘auto_ptr’ with no type 
mongodbbackend.hh:109: error: expected unqualified-id before ‘<’ token 
make[3]: *** [mongodbbackend.lo] Error 1 
make[3]: Leaving directory `/root/pdns-3.0.1/modules/mongodbbackend' 
make[2]: *** [all-recursive] Error 1 
make[2]: Leaving directory `/root/pdns-3.0.1/modules' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/root/pdns-3.0.1' 
make: *** [all] Error 2 

J'ai essayé d'inclure des fichiers de MongoDB 2.0.2 et 2.0.3. Voici les sources du module: http://wiki.powerdns.com/trac/browser/trunk/pdns/modules/mongodbbackend

Des suggestions?

+0

Êtes-vous sûr que c'est là la les erreurs commencent? Pas d'erreur juste au-dessus, comme "error: client/dbclient.h: Aucun fichier ou répertoire"? – Habbie

Répondre

1

Pouvez-vous essayer ce patch?

diff --git a/modules/mongodbbackend/mongodbbackend.hh b/modules/mongodbbackend/mongodbbackend.hh index 816128f..4f7cf78 100644 --- a/modules/mongodbbackend/mongodbbackend.hh +++ b/modules/mongodbbackend/mongodbbackend.hh @@ -1,13 +1,13 @@ #ifndef MONGODB_HH #define MONGODB_HH

+#include "client/dbclient.h" 
#include "pdns/dnsbackend.hh" 

#undef VERSION 
#include <string> 
using std::string; 
- 
-#include "client/dbclient.h" 
+using std::auto_ptr; 

class MONGODBException { 
public: 

Il est dans https://github.com/azlev/powerdns/commit/a402d8493e5610e139ea19a9ef700e26b2e6e35c

+0

Salut, ça a marché! compilé avec succès avec mongodb 2.0.3 pdns a commencé et avec succès connecté :) je vais faire un peu de test maintenant, merci pour l'aide! – Dawid

1

L'erreur de compilation que vous avez peut être surmonté en ajoutant:

#include<memory> 

et le changement

auto_ptr<mongo::DBClientCursor> cursor; 

à

std::auto_ptr<mongo::DBClientCursor> cursor; 

autour de la ligne 108/109/110 dans mangobackend.hh

Cela pourrait marcher pour vous, mais je pense que cela dépend fortement du mangodb-api que vous utilisez.

Il serait helpfull si vous fournir plus d'informations autour de votre environnement (distro, version de mangue, etc.)

2

Le poste de Ruben est mon anonyme/non-compte postal. Je n'ai pas regardé le formatage donc le post est un peu foiré.

L'erreur du compilateur que vous avez peut être résolu en ajoutant:

#include<memory>

Et changer de la ligne 109 de:

auto_ptr<mongo::DBClientCursor> cursor;

à

std::auto_ptr<mongo::DBClientCursor> cursor;

Ceci, cependant, provoque d'autres erreurs de ma part (voir http://pastebin.com/Wm60JCDu). Cela pourrait fonctionner pour vous :-)

Il serait utile que vous fournissiez plus d'informations sur votre environnement (distro, quelle version de mangodb et le pilote mango utilisé).

+0

Salut, merci pour le conseil, qui a résolu le problème :) mais d'autres problèmes sont apparus: http://pastebin.com/ThRZ4pP1 J'utilise debian squeeze avec mongodb 2.0.2 – Dawid

+0

Les problèmes que j'ai avec Debian Squeeze et le mongodb hors de la boîte. – cyclops

+0

De l'erreur que vous obtenez, il semble que cela a à voir avec la version de Mongo. Je ne sais pas quelle version de mongodb l'auteur de mongodbbackend a l'intention d'utiliser. Je suggère de lui demander à ce sujet. (voir README dans le dossier mongodbbackend) – cyclops