Tôi đã cài đặt tăng trên ubuntu 10.04 bằnglỗi liên kết trong program_options mã với thúc đẩy thư viện trên ubuntu
sudo apt-get install libboost-dev
Tôi nghĩ rằng sau đó tôi không cần phải thiết lập bất kỳ -I và -L cờ, vì vậy tôi biên dịch của tôi code của
g++ test.cpp
đây là test.cpp tôi
#include <iostream>
#include <string>
#include <set>
#include <sstream>
#include <boost/config.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
namespace pod = boost::program_options::detail;
int main()
{
//contents
std::stringstream s(
"a = 1\n"
"b = 2\n"
"c = test option\n");
//parameters
std::set<std::string> options;
options.insert("a");
options.insert("b");
options.insert("c");
//parser
for (pod::config_file_iterator i(s, options), e ; i != e; ++i)
{
std::cout << i->value[0] << std::endl;
}
}
tôi nghĩ mọi thứ sẽ suôn sẻ nhưng trên thực tế có một số lỗi :
/tmp/ccNQEbJM.o: Trong chức năng boost::program_options::detail::basic_config_file_iterator<char>::basic_config_file_iterator(std::basic_istream<char, std::char_traits<char> >&, std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool)': a.cpp:(.text._ZN5boost15program_options6detail26basic_config_file_iteratorIcEC1ERSiRKSt3setISsSt4lessISsESaISsEEb[boost::program_options::detail::basic_config_file_iterator<char>::basic_config_file_iterator(std::basic_istream<char, std::char_traits<char> >&, std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool)]+0x24): undefined reference to
boost :: program_options :: details :: common_config_file_iterator :: common_config_file_iterator (std :: set, std :: allocator>, std :: less, std :: allocator> >, std :: cấp phát, std :: cấp phát>>> const &, bool)' a.cpp :(. text._ZN5boost15program_options6detail26basic_config_file_iteratorIcEC1ERSiRKSt3setISsSt4lessISsESaISsEEb [boost :: program_options :: chi tiết :: basic_config_file_iterator :: basic_config_file_iterator (std :: basic_istream> &, std :: set, std :: allocator>, std :: less, std :: allocator>>, std :: allocator, std :: allocator>>> const &, bool)] + 0x5f): tham chiếu không xác định boost::program_options::detail::common_config_file_iterator::get()' /tmp/ccNQEbJM.o: In function
boost :: eof_iterator> :: increment() ': a.cpp :(. Text._ZN5boost12eof _iteratorINS_15program_options6detail27common_config_file_iteratorENS1_12basic_optionIcEEE9incrementEv [boost :: eof_iterator> :: increment()] + 0x10): tài liệu tham khảo không xác định để boost::program_options::detail::common_config_file_iterator::get()' /tmp/ccNQEbJM.o: In function
boost :: program_options :: chi tiết :: basic_config_file_iterator :: getline (std :: basic_string, std :: cấp phát> &): a.cpp :(. text._ZN5boost15program_options6detail26basic_config_file_iteratorIcE7getlineERSs [boost :: program_options :: chi tiết :: basic_config_file_iterator :: getline (std :: basic_string, std :: allocator> &)] + 0x5b): undefined tham chiếu đến `boost :: program_options: : to_internal (std :: basic_string, std :: allocator> const &) ' collect2: ld trả về 1 trạng thái thoát
Tôi không thể tìm ra nơi và tại sao tôi đã đi sai.
Bạn không bao giờ liên quan đến các thư viện tăng. Bạn cần phải xác định các tùy chọn '-l' thích hợp. –
bằng cách nào? Tôi cài đặt tăng bởi sudo apt-get install libboost-dev. Tôi không xuống thư viện đâu. Tôi chỉ định bằng "g ++ test.cpp -lboost-program_options" nhưng không tải được lboost-program_options. – light13
Đó là tất cả dấu gạch dưới, bạn có một '-' sau khi tăng mà nên là '_' – fefe