Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка с компиляцией. program_options 
V
    Опции темы
Хоббит
Дата 12.2.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Есть небольшая программа.
Код

#include <iostream>
#include <cstdlib>
#include <boost/program_options/options_description.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>

using namespace std;
namespace po = boost::program_options;

int main(int argc, char *argv[])
{
  po::options_description optionsDescription("Allowed options");
    optionsDescription.add_options()
    ("help", "Thil help message.")
    ("command,c", po::value<string>()->default_value(""), "command");

    po::positional_options_description pd;
    pd.add("command", 1);

    // Сохраняем аргументы.
    po::variables_map variableMap;

    try
    {
        po::store(po::command_line_parser(argc, argv).
        options(optionsDescription).positional(pd).run(), variableMap);

        po::notify(variableMap);
    }
    catch (...)
    {
        cout << optionsDescription << endl;
        return EXIT_FAILURE;
    }
    
    if (variableMap.count("help"))
        {
            cout << optionsDescription << endl;
            return EXIT_SUCCESS;
        }

  return EXIT_SUCCESS;
}


На моем компьютере компилируется. Компилирую в kdevelop.

Переношу проект на удаленный сервер, на стадии make вылетает такая ошибка.
Компилирую
make -f Makefile.cvs
cd debug; 
configure;
make -k;
(выполняю те же команды что и kdevelop)

Код


[ivanov@c3 progopt]$ cd debug; make -k;
make  all-recursive
make[1]: Entering directory `/home/ivanov/develop/progopt/debug'
Making all in src
make[2]: Entering directory `/home/ivanov/develop/progopt/debug/src'
if g++ -DHAVE_CONFIG_H -I. -I/home/ivanov/develop/progopt/src -I..     -O0 -pg -g3 -lmysqlclient -MT progopt.o -MD -MP -MF ".deps/progopt.Tpo" -c -o progopt.o /home/ivanov/develop/progopt/src/progopt.cpp; \
then mv -f ".deps/progopt.Tpo" ".deps/progopt.Po"; else rm -f ".deps/progopt.Tpo"; exit 1; fi
/home/ivanov/develop/progopt/src/progopt.cpp: In function `int main(int, char**)':
/home/ivanov/develop/progopt/src/progopt.cpp:30: error: aggregate `boost::program_options::positional_options_description pd' has incomplete type and cannot be defined
/home/ivanov/develop/progopt/src/progopt.cpp:39: error: no matching function for call to `boost::program_options::basic_command_line_parser<char>::positional(<type error>)'
/usr/include/boost/program_options/detail/parsers.hpp:57: note: candidates are: boost::program_options::basic_command_line_parser<charT>& boost::program_options::basic_command_line_parser<charT>::positional(const boost::program_options::positional_options_description&) [with charT = char]
make[2]: *** [progopt.o] Ошибка 1
make[2]: Цель `all' не была пересобрана из-за ошибок.
make[2]: Leaving directory `/home/ivanov/develop/progopt/debug/src'
make[2]: Entering directory `/home/ivanov/develop/progopt/debug'
make[2]: Цель `all-am' не требует выполнения команд.
make[2]: Leaving directory `/home/ivanov/develop/progopt/debug'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/home/ivanov/develop/progopt/debug'
make: *** [all] Ошибка 2


Кажется самое важное вот это
error: aggregate `boost::program_options::positional_options_description pd' has incomplete type and cannot be defined
Что делать?
boost на компьютере есть, и библиотека подключена к программе. Проблема именно с positional_options.

Добавлено через 2 минуты и 4 секунды
Если компилировать только входной файл, вот что выходит

[ivanov@c3 src]$ g++ progopt.cpp
progopt.cpp: In function `int main(int, char**)':
progopt.cpp:30: error: aggregate `boost::program_options::positional_options_description pd' has incomplete type and cannot be defined
progopt.cpp:39: error: no matching function for call to `boost::program_options::basic_command_line_parser<char>::positional(<type error>)'
/usr/include/boost/program_options/detail/parsers.hpp:57: note: candidates are: boost::program_options::basic_command_line_parser<charT>& boost::program_options::basic_command_line_parser<charT>::positional(const boost::program_options::positional_options_description&) [with charT = char]

PM MAIL   Вверх
xvr
Дата 12.2.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Версия boost'а таже?

PM MAIL   Вверх
Хоббит
Дата 12.2.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Как проверить версию boost? В каком файле?
PM MAIL   Вверх
vinick
Дата 12.2.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 4
Всего: 22



версия буста лежит в boost/version.hpp
У меня на 1.35 твой пример нормально собирается.

И по хорошему надо тебе <boost/program_options.hpp> подключить

Это сообщение отредактировал(а) vinick - 12.2.2009, 17:23
PM MAIL ICQ Jabber   Вверх
Хоббит
Дата 12.2.2009, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



smile
И правда #include <boost/program_options.hpp> помогло... и как я не догадался. А на моем компьютере все собирается без него.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.