1

我试图为 powerdns 编译 mongodbbackend 模块,但我遇到了这个问题:

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

我试图包含来自 mongodb 2.0.2 和 2.0.3 的文件。以下是模块来源: http ://wiki.powerdns.com/trac/browser/trunk/pdns/modules/mongodbbackend

有什么建议么?

4

3 回答 3

2

Ruben 的帖子是我的匿名/非帐户帖子。我没有看格式,所以帖子有点混乱。

您可以通过添加以下内容来克服编译器错误:

#include<memory>

并将第 109 行从:

auto_ptr<mongo::DBClientCursor> cursor;

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

但是,这会导致我的其他错误(请参阅http://pastebin.com/Wm60JCDu)。不过它可能对你有用:-)

如果您提供有关您的环境的更多信息(发行版、mangodb 的版本和使用的 mango 驱动程序),将会很有帮助。

于 2012-02-23T08:05:41.290 回答
1

您可以通过添加以下内容来克服编译错误:

#include<memory>

和改变

auto_ptr<mongo::DBClientCursor> cursor;

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

108/109/110 号线附近mangobackend.hh

它可能对您有用,但我认为这在很大程度上取决于您使用的 mangodb-api。

如果您提供有关您的环境的更多信息(发行版、芒果版本等),将会很有帮助

于 2012-02-23T07:50:34.557 回答
1

你可以试试这个补丁吗?

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:

它在https://github.com/azlev/powerdns/commit/a402d8493e5610e139ea19a9ef700e26b2e6e35c

于 2012-03-03T15:05:50.783 回答