Мне дана команда для связывания программ:
g++ -o prog_name prog_name.cc -lsicklms-x -pthread
Однако я не использую командную строку, я использую eclipse.
Мой проект называется «Тест», и у меня есть только 1 класс «main.cpp», который выглядит так:
/*
* 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;
}
Я получаю все эти ошибки:
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()'
Так что я думаю, что это проблема связывания. И у меня есть указанная выше команда для связи, которая, как говорится в руководстве, обязательна, но я не уверен, как настроить ее в Eclipse.
Там, где в коде написано #include sicklms-1.0/SickLMS.hh
, я перешел в «Проект»> «Свойства»> «Сборка C / C ++»> «Настройки»> «Компилятор GCC C ++»> «Каталоги» и добавил каталог в файл .h, и это решило эту проблему, но теперь я Я получаю эти ошибки. Я пошел в GCC C ++ Linker> Библиотеки> Путь поиска библиотеки (-L) и добавил каталог sicktoolbox-1.0.1, но я не знаю, что поместить в часть Библиотеки (-l).
Спасибо за любую помощь, я действительно застрял в этом.