Argomenti della riga di comando C++ Eclipse CDT?
-
28-10-2019 - |
Domanda
Sto usando un programma di esempio da questo codice http://sicktoolbox.sourceforge.net/ > http://sourceforge.net/projects/sicktoolbox/files/ .È fondamentalmente un driver per scanner a distanza.Il programma che sto cercando di eseguire è in malatitoolbox-1.0.1/c++/examples/lms/lms_plot_values nel caso volessi vedere il codice di cui sto parlando.
Ad ogni modo, la cartella del progetto lms_plot_values contiene gnuplot_i.cc, gnuplot_i.hpp, main.cc, Makefile, Makefile.am, Makefile.in.Quindi ho inserito i primi tre file nel mio CDT Eclipse Indigo, compilato (nessun errore del compilatore, tutto è già collegato correttamente in Eclipse e tutte le librerie necessarie sono state aggiunte), ma questo programma di esempio è scritto per accettare argomenti della riga di comando.Ecco quanto arriva il codice.
/*!
* \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;
}
Come dice, genera un errore e uccide il programma, dicendo che vuole che digiti "lms_plot_values /dev/ttyUSB0 9600" dalla riga di comando per eseguire il programma, ma non posso farlo e voglio farlo faccio tutto in eclissi, quindi non voglio farlo.Ho provato ad aggiungere:
argv[1] = "/dev/ttyUSB0";
argv[2] = "9600";
Ma non ha funzionato a causa dei controlli argc.Sai se dice di passare "lms_plot_values /dev/ttyUSB0 9600", perché si aspetterebbe o da dove otterrebbe i valori argc?O come posso far credere che questi parametri siano stati trasmessi?Non ho molta familiarità con il funzionamento del C++ in questo modo, ho usato solo Java.
Grazie per qualsiasi aiuto
Soluzione
Puoi anche passare argomenti in Eclipse.Una volta creato il tuo progetto, prova a creare una configurazione di esecuzione e lì puoi passare gli argomenti.Ecco la schermata: