Ich erhalte den Befehl, Programme zu verknüpfen:
g++ -o prog_name prog_name.cc -lsicklms-x -pthread
Ich verwende jedoch nicht die Befehlszeile, sondern Eclipse.
Mein Projekt heißt "Test" und ich habe nur 1 Klasse "main.cpp", die dies ist:
/*
* Test.cpp
*
* Created on: Dec 1, 2011
* Author: igvc
*/
#include <iostream>
#include <sicklms-1.0/SickLMS.hh>
using namespace std;
using namespace SickToolbox;
int main(int argc, char *argv[]) {
/* Specify device path and baud */
string dev_path = "/dev/ttyUSB0";
sick_lms_baud_t lms_baud = SickLMS::SICK_BAUD_38400;
/* Define buffers for return values */
unsigned int measurements[SickLMS::SICK_MAX_NUM_MEASUREMENTS] = {0};
unsigned int num_measurements = 0;
/* Instantiate the object */
SickLMS sick_lms(dev_path);
try {
/* Initialize the device */
sick_lms.Initialize(lms_baud);
/* Grab some measurements */
for(unsigned int i = 0; i < 10; i++) {
sick_lms.GetSickScan(measurements,num_measurements);
cout << "\t" << num_measurements << endl;
}
/* Uninitialize the device */
sick_lms.Uninitialize();
}
catch(...) {
cerr << "error" << endl;
return -1;
}
return 0;
}
Ich erhalte all diese Fehler:
undefined reference to `SickToolbox::SickLMS::~SickLMS()`
undefined reference to `SickToolbox::SickLMS::GetSickScan(unsigned int*, unsigned int&, unsigned int*, unsigned int*, unsigned int*, unsigned int*, unsigned int*)'
undefined reference to `SickToolbox::SickLMS::Initialize(SickToolbox::SickLMS::sick_lms_baud_t)'
undefined reference to `SickToolbox::SickLMS::SickLMS(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
undefined reference to `SickToolbox::SickLMS::Uninitialize()'
Ich denke also, dass es sich um ein Problem der Verknüpfung handelt. Und ich habe den oben genannten Befehl zu verknüpfen, die das Tutorial sagt, ist erforderlich, aber ich bin nicht sicher, wie man es in Eclipse einrichten.
Wo der Code sagt #include sicklms-1.0/SickLMS.hh
Ich bin zu Project>Properties>C/C++ Build>Settings>GCC C++ Compiler>Directories gegangen und habe das Verzeichnis zur .h Datei hinzugefügt und das hat das Problem gelöst, aber jetzt bekomme ich diese Fehler. Ich bin zu GCC C++ Linker>Bibliotheken>Bibliothekssuchpfad(-L) gegangen und habe das Verzeichnis sicktoolbox-1.0.1 hinzugefügt, aber ich weiß nicht, was ich in den Teil Bibliotheken(-l) eingeben soll.
Vielen Dank für jede Hilfe, ich stecke wirklich fest in dieser Sache.