C ++ аргументы командной строки Eclipse CDT? - PullRequest
11 голосов
/ 05 декабря 2011

Я использую пример программы из этого кода http://sicktoolbox.sourceforge.net/> http://sourceforge.net/projects/sicktoolbox/files/. Это в основном драйвер сканера расстояния. Программа, которую я пытаюсь запустить, находится в sicktoolbox-1.0.1 / c ++ / examples / lms / lms_plot_values ​​на тот случай, если вы захотите увидеть код, о котором я говорю.

В любом случае, папка проекта lms_plot_values ​​содержит gnuplot_i.cc, gnuplot_i.hpp, main.cc, Makefile, Makefile.am, Makefile.in. Поэтому я поместил первые три файла в мой Eclipse Indigo CDT, скомпилировал (без ошибок компилятора, все правильно связано в Eclipse и все необходимые библиотеки добавлены), но этот пример программы написан так, чтобы принимать аргументы командной строки. Вот, насколько код получает.

/*!
 * \file main.cc
 * \brief Illustrates how to acquire a measurements from the Sick
 *        LMS 2xx using the configured measuring mode.
 *
 * Note: This example should work for all Sick LMS 2xx models.
 *
 * Code by Jason C. Derenick and Thomas H. Miller.
 * Contact derenick(at)lehigh(dot)edu
 *
 * The Sick LIDAR Matlab/C++ Toolbox
 * Copyright (c) 2008, Jason C. Derenick and Thomas H. Miller
 * All rights reserved.
 *
 * This software is released under a BSD Open-Source License.
 * See http://sicktoolbox.sourceforge.net
 */

/* Implementation dependencies */
#include <stdlib.h>
#include <string>
#include <vector>
#include <signal.h>
#include <iostream>
#include <sicklms-1.0/SickLMS.hh>
#include "gnuplot_i.hpp"

using namespace std;
using namespace SickToolbox;

bool running = true;
void sigintHandler(int signal);

int main(int argc, char * argv[]) {

  string device_str; // Device path of the Sick LMS 2xx
  SickLMS::sick_lms_baud_t desired_baud = SickLMS::SICK_BAUD_38400;

  /* Check for a device path.  If it's not present, print a usage statement. */
  if ((argc != 2 && argc != 3) || (argc == 2 && strcasecmp(argv[1],"--help") == 0)) {
    cout << "Usage: lms_plot_values PATH [BAUD RATE]" << endl
     << "Ex: lms_plot_values /dev/ttyUSB0 9600" << endl;
    return -1;
  }

Как он говорит, он выдает ошибку и убивает программу, говоря, что хочет, чтобы я набрал "lms_plot_values ​​/ dev / ttyUSB0 9600" из командной строки, чтобы запустить программу, но я не могу этого сделать, и я ' Я хочу сделать все в затмении, поэтому я не хочу этого делать. Я попытался добавить:

argv[1] = "/dev/ttyUSB0";
argv[2] = "9600";

Но это не сработало из-за проверок argc. Знаете ли вы, что в сообщении указано, что оно передает «lms_plot_values ​​/ dev / ttyUSB0 9600», почему это ожидалось или откуда оно получало значения argc? Или как я могу заставить это думать, что эти параметры были переданы? Я не очень хорошо знаю, как работает C ++, я использовал только Java.

Спасибо за любую помощь

1 Ответ

18 голосов
/ 05 декабря 2011

Вы также можете передавать аргументы в eclipse. Как только вы соберете свой проект, попробуйте создать конфигурацию запуска, и там вы сможете передать аргументы. Вот снимок экрана:

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...