gpt4 book ai didi

c++ - 将程序链接到 Eclipse 中的 C++ 项目? Linux

转载 作者:太空狗 更新时间:2023-10-29 12:21:04 26 4
gpt4 key购买 nike

我得到了链接程序的命令:

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>Libraries>Library search path(-L) 并添加了 sicktoolbox-1.0.1 目录,但我不知道在 Libraries(-l) 部分放什么。

感谢您的帮助,我真的很困惑。

最佳答案

大概您正在使用 Eclipse CDT?

右键单击您的项目并从上下文菜单中选择“属性”。

在属性对话框中,选择 C/C++ Build->Settings->GCC C++ Linker->Libraries

在“库”框中,单击 + 按钮以添加新库,键入 sicklms

您的库必须位于链接器的路径中。/usr/lib 和/usr/local/lib 是相当标准的。对于 -l,库名称必须是 libsicklms.a 或 libsicklms.so,因为链接器会将 lib 添加到库名称之前。

如果 sicklms 是使用 ./configure && make && make install 从源代码安装的,那么库应该在标准库路径中,即/usr/lib 或/usr/local/lib 否则,你的问题不是你的链接器,但是 sicklms 的安装方式。

如果上述任何说明不可行,您需要告诉我

a) Eclipse 版本(Galileo、Indigo 等)

b) 如果您安装了 CDT。

c) sicklms 是如何安装在您的系统上的(包管理器、从源代码构建等)。

关于c++ - 将程序链接到 Eclipse 中的 C++ 项目? Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com