(.bss+0x0):代理的多重定义

2024-02-01

我有这段用于自动化机器人的代码。它使用 Player 中的一些代理类 - Player 是一个用于机器人编程的开源软件。我使用以下命令编译了两个 cpp 文件:



g++ -c -Wall  navigation.cpp `pkg-config --cflags playerc++` `pkg-config --libs playerc++`
and
g++ -c -Wall  autonavigation.cpp `pkg-config --cflags playerc++` `pkg-config --libs playerc++`
I then linked the object files (which is where the problem arises):
g++ -o autonavigate  navigation.o autonavigation.o `pkg-config --cflags playerc++` `pkg-config --libs playerc++`.
  

代码在这里:



erratic@erratic-desktop:~/Desktop/autonav$ g++ -o autonavigate navigation.o 
autonavigation.o `pkg-config --cflags playerc++` `pkg-config --libs playerc++`

autonavigation.o:(.bss+0x0): multiple definition of `gHostname'

navigation.o:(.bss+0x0): first defined here

autonavigation.o:(.data+0x0): multiple definition of `gPort'

navigation.o:(.data+0x0): first defined here

autonavigation.o:(.bss+0x4): multiple definition of `gIndex'

navigation.o:(.bss+0x4): first defined here

autonavigation.o:(.bss+0x8): multiple definition of `gDebug'

navigation.o:(.bss+0x8): first defined here

autonavigation.o:(.data+0x4): multiple definition of `gFrequency'

navigation.o:(.data+0x4): first defined here

autonavigation.o:(.data+0x8): multiple definition of `gDataMode'

navigation.o:(.data+0x8): first defined here

autonavigation.o:(.bss+0xc): multiple definition of `gUseLaser'

navigation.o:(.bss+0xc): first defined here

autonavigation.o: In function `parse_args(int, char**)':

autonavigation.cpp:(.text+0x0): multiple definition of `parse_args(int, char**)'

navigation.o:navigation.cpp:(.text+0x0): first defined here

autonavigation.o: In function `print_usage(int, char**)':

autonavigation.cpp:(.text+0x101): multiple definition of `print_usage(int, char**)'

navigation.o:navigation.cpp:(.text+0x101): first defined here

collect2: ld returned 1 exit status
  

源码来自评论:

//navigation.h
#include <libplayerc++/playerc++.h>
#include <stdio.h>
#include <time.h>
#include "args.h"
#define PI 3.14159

using namespace std;
using namespace PlayerCc;

class navigation
{
public:
    navigation();
    void autoNavigate(PlayerClient &, LaserProxy &, Position2dProxy &, PtzProxy &, IrProxy &, SonarProxy &);

private:
    void wallFollow(LaserProxy &, Position2dProxy &);
    void obstacleAvoid(IrProxy &, SonarProxy &, PlayerClient &, Position2dProxy &);
};

来源:autonavigation.cpp:

#include "navigation.h"

int main(int argc, char *argv[])
{
    PlayerClient robot("localhost");
    LaserProxy lp(&robot,0);
    Position2dProxy pp(&robot,0);
    PtzProxy ptp (&robot,0);
    IrProxy ir(&robot,0);
    SonarProxy sp(&robot, gIndex);

    navigation nav;
    nav.autoNavigate(robot, lp, pp, ptp, ir, sp);
}

如果没有看到你的代码,我们只能猜测,但我的猜测是你define这些变量位于您包含在两个源文件中的头文件中。

你应该declare变量,并使用extern告诉编译器变量是在其他地方定义的。然后在one您定义变量的源文件(即与头文件中的声明相同,但没有extern关键词)。

例如,假设我有一个变量hostname我想在多个源文件中使用,然后我制作一个extern我将其包含在需要该变量的所有源文件中的头文件中的声明:

extern char hostname[32];

然后在一个源文件中我定义变量:

char hostname[32];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(.bss+0x0):代理的多重定义 的相关文章

  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne

随机推荐

  • 在 Eclipse 中从验证中排除目录和子目录

    如何在 Eclipse 中从验证中排除文件夹及其子目录 我知道您可以右键单击包资源管理器中的文件夹并选择排除验证 但如果它下面有子目录 则必须为每个子目录执行此操作 并且对于生成的目录或具有许多子目录的目录来说并不理想 文件夹 有什么插件可
  • 如何在 MSBuild WebProjectOutputDir 中留有空格?

    我正在尝试从命令行调用 MSBuild 当我使用没有空格的路径时 一切工作正常 但现在我有一个有空格的路径 并且命令失败 命令 有效 C Windows Microsoft NET Framework v3 5 MSBuild exe t
  • 在 Struts2 中的一个操作类本身中创建多个方法?

    我可以在同一个操作类中创建两个方法吗 如果是这样 我们如何在struts xml file 例如 我创建了一个简单的验证操作类来验证email address也password使用两个单独的正则表达式 我在 Action 类中创建了两个方法
  • SQLAlchemy 中的过滤关系

    我有以下场景 class Author Base tablename author id Column Integer primary key True name Column String books relationship Books
  • 对齐 Excel 2013 和 R 的数值精度

    这是一个相当广泛的问题 但我在 R 中复制了一个 Excel 模型 R 产生的结果与 excel 几乎相同 但总是在 10 8 范围内存在轻微的 偏差 我认为这是由于数值精度造成的 该模型仅使用基本算术运算 我的问题是 有没有一种简单的方法
  • 在 Emacs html 模式下关闭块着色

    load elisp nxhtml autostart el setq mumamo chunk coloring no chunks colored 目前 我的 emacs 中有上述内容 并且块着色仍然显示 我还尝试通过自定义选项禁用它
  • 如果 URL 以某个字符串开头,Apache .htaccess 将 URL 转换为小写

    我需要创建一个小写重定向规则 所有以以下开头的网址 catalog 一定是小写的 例子 catalog Foo gt catalog foo catalog Foo fOO2 gt catalog foo foo2 你能帮助我吗 假设您使用
  • 如何使用 django 服务器 HTTP/2 协议

    我计划使用 HTTP 2 协议部署 Django 应用程序 但我无法找到正确的解决方案 我如何使用 HTTP 2 为我的 Django Web 应用程序提供服务 我唯一发现的是hyper h2 https github com python
  • 如何通过列表视图适配器中的单击按钮打开菜单上下文Android?

    如何通过列表视图适配器中的单击按钮打开菜单上下文Android 我尝试使用我的代码 但不显示菜单上下文 code public View getView int position View convertView ViewGroup par
  • 二维轨道物理

    我正在为游戏开发 2D 物理引擎 我使用简单的迭代方法让重力和质量起作用 我知道我最终必须升级 我可以手动推动群众并观察他们移动 一切都按照我的预期进行 现在我正在尝试用一颗围绕行星的简单圆形轨道上的卫星提前设置游戏世界 为此 我需要在给定
  • laravel 找不到支持的加密器。密码和/或密钥长度无效

    我正在使用 Laravel 构建一个项目 它在本地主机上工作正常 但是当我将其上传到服务器 服务器安装了 comodo ssl 时 我收到以下错误 RuntimeException in EncryptionServiceProvider
  • 我怎样才能使这项工作具有深层属性

    鉴于以下代码 class Program static void Main string args Foo foo new Foo Bar new Bar Description Martin Name Martin DoLambdaStu
  • 如何通过database.properties文件使persistence.xml文件的数据库配置可配置

    我想得到对查询的确认 有没有办法通过database properties使用来进行数据库配置配置persistance xml 以下可能吗 我的以下配置工作得很好
  • 域实体中的外键属性

    在领域驱动设计中 领域模型应该完全不知道任何数据持久细节 假设一个Employee属于一个Department 域实体可能如下所示 public Employee public string EmployeeId get set publi
  • “-webkit-overflow-scrolling: touch”破坏了 css 3d 透视

    正在寻找解决方案仅限 iOS Safari 使用时 webkit overflow scrolling touch它打破了 iOS 上的 3D 视角 请参阅演示CodePen http codepen io abernier pen qda
  • 将 C++ 函数传递给 emscripten 中的 javascript 函数

    我正在学习 emscripten 并试图更好地理解它 据我了解 它的主要设计用途是将现有的 C C 代码移植到 Web 客户端 浏览器 并从 JavaScript 调用 C C 代码 但我想知道是否可以使用 C 和 Emscripten 来
  • 函数是对象吗?为什么console.log不显示可检查的对象?

    var foo function foo a an attribute set attribute to prove foo is an object console log foo log shows function 我以为函数 foo
  • 如何在工作站主机上使用自定义 Eclipse Che 堆栈?

    我想知道在工作站上运行 Che 时使用自定义 Eclipse Che 堆栈的便捷方法是什么 我非常喜欢 Eclipse Che 的概念 为不同的开发环境提供单独的 Che 工作区 Docker 容器 并安装相应的工具 工作区是从 Che 堆
  • 测试 C 宏的值是否为空

    我需要编写一些代码来验证宏是否已定义但为空 没有任何值 测试不需要在编译时进行 我正在尝试写 if funcprototype MY WARN funcprototype is empty endif 该代码无法编译 因为funcproto
  • (.bss+0x0):代理的多重定义

    我有这段用于自动化机器人的代码 它使用 Player 中的一些代理类 Player 是一个用于机器人编程的开源软件 我使用以下命令编译了两个 cpp 文件 g c Wall navigation cpp pkg config cflags