2011-10-10 14 views
5

मैं बूस्ट Gzip फिल्टर पेज से उदाहरण संकलित करने के लिए कोशिश कर रहा हूँ:बूस्ट Gzip फिल्टर: failes संकलन

#include <fstream> 
#include <iostream> 
#include <boost/iostreams/filtering_streambuf.hpp> 
#include <boost/iostreams/copy.hpp> 
#include <boost/iostreams/filter/gzip.hpp> 

int main() 
{ 
    using namespace std; 

    ifstream file("hello.gz", ios_base::in | ios_base::binary); 
    filtering_streambuf<input> in; 
    in.push(gzip_decompressor()); 
    in.push(file); 
    boost::iostreams::copy(in, cout); 
} 

दुर्भाग्य से मेरे जी ++ त्रुटियों रिटर्न:

gzlib.cpp: In function ‘int main()’: 
gzlib.cpp:12:3: error: ‘filtering_streambuf’ was not declared in this scope 
gzlib.cpp:12:23: error: ‘input’ was not declared in this scope 
gzlib.cpp:12:30: error: ‘in’ was not declared in this scope 
gzlib.cpp:13:29: error: ‘gzip_decompressor’ was not declared in this scope 

क्या इस समारोह और कैसे साथ कुछ गड़बड़ है इसे काम करने के लिए इसे संशोधित करें? आपका बहुत बहुत धन्यवाद!

लिंक Gzip फिल्टर बूस्ट करने के लिए: http://www.boost.org/doc/libs/release/libs/iostreams/doc/classes/gzip.html

उत्तर

8

समस्या यह है कि आप जो में खोजने के लिए filtering_streambuf, input, या gzip_decompressor नाम स्थान निर्दिष्ट नहीं कर रहे है। प्रयास करें:

सभी वर्गों, कार्य और टेम्प्लेट प्रलेखन में पेश कर रहे हैं:

#include <fstream> 
#include <iostream> 
#include <boost/iostreams/filtering_streambuf.hpp> 
#include <boost/iostreams/copy.hpp> 
#include <boost/iostreams/filter/gzip.hpp> 

int main() 
{ 
    using namespace std; 
    using namespace boost::iostreams; 
    ifstream file("hello.gz", ios_base::in | ios_base::binary); 
    filtering_streambuf<input> in; 
    in.push(gzip_decompressor()); 
    in.push(file); 
    copy(in, cout); 
} 

कारण यह है कि example ऐसा नहीं करती सम्मेलन introduction में स्थापित की वजह से है नेमस्पेस बूस्ट :: iostreams, जब तक कि अन्यथा इंगित न किया जाए। नेमस्पेस योग्यता आमतौर पर छोड़ी जाती है।

+0

बहुत सारी त्रुटियां हैं, इसलिए मैंने पेस्टबिन में आउटपुट डाला है। मेरा बूस्ट गलत काम हो सकता है? http://pastebin.com/fG2ZqpaJ – ghostmansd

+0

@ghostmansd: जैसा कि बताया गया है [यहां] (http://www.boost.org/doc/libs/release/libs/iostreams/doc/classes/gzip.html#installation), काम करने के लिए आपको 'zlib' से लिंक करने की आवश्यकता है। 'zlib'' बूस्ट 'के बाहर है, लेकिन यह आमतौर पर यूनिक्स सिस्टम पर पूर्व-स्थापित होता है, और अन्यथा [यहां] (http://zlib.net/) से डाउनलोड किया जा सकता है। – Mankarse

+0

मैं -lz का उपयोग करके संकलित करता हूं, लेकिन इससे मदद नहीं मिलती है। – ghostmansd

संबंधित मुद्दे