gpt4 book ai didi

c++ - 调试 "multiple definition of ..."错误的一般技巧?

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:37 30 4
gpt4 key购买 nike

我正在寻找通用的调试“技巧”来查找此类错误消息的根源问题:

build/nat.cpp.o:(.bss+0x0): multiple definition of `input::helloCounter'
build/sam.cpp.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status

这里,input::helloCounter 是在头文件中定义的全局变量,但是头文件使用ifndef... 进行了很好的保护。

在这里粘贴源代码应该是没有意义的,因为太多了。但是我想知道您是否有一些通用的技术可以在这种情况下进行调试,例如通过插入一些特殊代码来暴露问题?有关信息,我使用 Ubuntu 14.04,Clang/g++ 作为编译器。

最佳答案

这主要是一个特定于实现的问题。您没有指定您使用的是哪种编译器或操作系统,因此无法提供针对您的平台的特定帮助。但是,例如,在 Linux 上的类似情况下,我会使用 nm(1)来自 binutils 的工具在所有目标代码文件中搜索定义符号的目标代码文件,定位所有定义它的目标代码文件,并确定哪些不应该定义它。

一旦知道哪个目标代码文件的定义不应该存在,就可以检查相应的源文件以确定它是如何编译的。

我敢肯定,无论您使用的是什么编译器或操作系统,它都必须具有可比较的工具,您可以以相同的方式使用它们。

关于c++ - 调试 "multiple definition of ..."错误的一般技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180145/

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