私はリンクプログラムにコマンドを与えています:EclipseのC++プロジェクトにプログラムをリンクするには? Linuxの
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++リンカー>ライブラリ>ライブラリ検索パス(-L)に行き、sicktoolbox-1.0.1ディレクトリを追加しましたが、ライブラリ(-l)に何を入れるべきかわかりません。
何か助けていただきありがとうございます。私は本当にこれに固執しています。
ソフトウェアをビルドするために 'make(1)'を使用しない特別な理由はありますか? – sarnold
申し訳ありませんが、私はCやC++に精通していないので、make(1)が何であるか本当に分かりません。私はいつもEclipseでJavaを使いました。 JavaとC++を使用しているので、私のチームはEclipseを使い続けたいと思っています。私たちはC++で低レベルのプログラム(このようなもの)を書いており、これをJavaでラップしています。私たちはこの問題を回避できればEclipseで簡単だと思います。 – user1028641