0

我正在使用 Player/Stage 进行我的论文工作。但是,当我想在 Eclipse CDT 中构建此代码时,我收到未定义的参考错误消息-

#include <iostream>
#include <playerc++.h>
#include <playerclient.h>
#include <clientproxy.h>
using namespace std;

int main()
{
PlayerClient robot("localhost",6665);
return 0;
}

错误信息是:

08:40:02 **** Build of configuration Debug for project firstTest ****
make all
Building file: ../src/firstTest.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/local/include/player-3.0/libplayerc++ -include/usr/local/include/player-3.0/libplayerc++/playerc++.h -include/usr/local/include/player-3.0/libplayerc++/clientproxy.h -include/usr/local/include/player-3.0/libplayerc++/playerc++config.h -include/usr/local/include/player-3.0/libplayerc++/playerclient.h -include/usr/local/include/player-3.0/libplayerc++/playererror.h -include/usr/local/include/player-3.0/libplayerc++/utility.h -O0 -g3 -Wall -c -fmessage-length=0 `pkg-config --cflags playerc++` -MMD -MP -MF"src/firstTest.d" -MT"src/firstTest.d" -o "src/firstTest.o" "../src/firstTest.cpp"
Finished building: ../src/firstTest.cpp
Building target: firstTest
Invoking: GCC C++ Linker
g++ `pkg-config --libs playerc++` -o "firstTest" ./src/firstTest.o
./src/firstTest.o: In function `main':
/home/nafees/workspace/firstTest/Debug/../src/firstTest.cpp:19: undefined reference to `PlayerCc::PlayerClient::PlayerClient(std::string, unsigned int, int)'
/home/nafees/workspace/firstTest/Debug/../src/firstTest.cpp:19: undefined reference to `PlayerCc::PlayerClient::~PlayerClient()'
collect2: error: ld returned 1 exit status
make: *** [firstTest] Error 1

08:40:02 Build Finished (took 514ms)

我遵循了 Jenny-http://yorkroboticist.blogspot.com/2010/03/playerstage-on-eclipse.html 发布的这个不错的教程

在此链接中,您将获得我的 Eclipse 项目属性的快照: https ://www.dropbox.com/sh/9hcmditufu0lt6v/AAChqD1-FMM9FhvTWpuOGMQ-a?dl=0

我已经尝试了很多方法来消除这个错误。但是,一切顺理成章。请帮助我继续我的论文。

感谢纳菲斯

4

1 回答 1

0

我已经弄清楚了“未定义的引用”问题.....

如果有人想使用 eclipse CDT 进行舞台/播放器模拟,请按照以下步骤操作。我假设您已经正确安装了 Player/Stage。

  1. 转到项目属性

  2. 展开C/C++ 构建

  3. 点击设置

  4. 如果您想构建 C++ 代码,请按照以下步骤操作 -

    • GCC C++ Compiler下,单击Miscellaneous选项卡。

    • 有一个名为“其他标志”的框。将此行(带有`符号)粘贴到框上-

    `pkg-config --cflags playerc++`

    • 注意:切勿编辑框中的现有行。只需将上面的行粘贴到现有行旁边并带有空格即可。并记住'和`是不一样的。

    • 然后,转到包含/目录(名称可能因 Eclipse 版本而异)选项卡。有一个“包含路径(-I)”框。单击添加按钮并导航到-计算机> usr>本地>包含> Player-xx,然后按确定。

  5. 如果您想构建 C 代码,请跳过第 4 条指令并按照以下步骤操作 -

    • GCC C 编译器下,单击Miscellaneous

    • 有一个名为“其他标志”的框。将此行(带有`符号)粘贴到框上-

    `pkg-config --cflags playerc`

    • 注意:切勿编辑框中的现有行。只需将上面的行粘贴到现有行旁边,并带有空格。请记住 ' 和 ` 是不一样的

    • 转到包含/目录(名称可能因 Eclipse 版本而异)选项卡。有一个“包含路径(-I)”框。单击添加按钮并导航到-计算机> usr>本地>包含> Player-xx,然后按确定。

  6. 现在,最重要的步骤来了。在GCC C++ Linker下,单击Miscellaneous选项卡。有一个名为“链接器标志”的框。

    • 如果您使用的是 C++,请粘贴以下行 -

    `pkg-config --libs playerc++`

    • 如果您使用的是 C,请粘贴以下行而不是上面的行 -

    `pkg-config --libs playerc`

    • 现在,转到选项卡,在那里您将看到“库(-l)”框。按添加按钮和

    • 如果您使用的是 C++,请粘贴以下行 -

    播放器c++

    • 如果您使用的是 C,请粘贴以下行而不是上面的行 -

    播放器c

    • 最后,在下方有一个名为“Library search path (-L)”的框。单击添加按钮并导航到-计算机> usr>本地> lib,然后单击确定。

就是这样......现在尝试编译和构建示例代码。:) :) :)

于 2015-11-20T05:39:00.100 回答