gpt4 book ai didi

c++ - 除 'extern' 之外的符号乘法定义的可能原因

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:46 27 4
gpt4 key购买 nike

除了没有在 .h 中声明、将其作为“外部”并在 .cpp 中实现之外,是否还有其他“符号多重定义”的原因?

我很确定我的所有文件都遵循规则,但我收到如下错误消息:

ld: lto: could not merge in /Users/zlw/Library/Developer/Xcode/DerivedData/Wireless -  
amjmgyrircjezdhegioctszbcypz/Build/Intermediates/Wireless.build/Debug/Wireless.build/Objects
normal/x86_64/qam.o because 'Linking globals named '_Z12SNRFromSNRdBd': symbol multiply
defined!', using libLTO version 'LLVM version 3.3svn, from Apple Clang 5.0 (build
500.2.76)' for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

该消息是否意味着所有问题都与'qam.h'或'qam.cpp'有关?

除了“外部”之外还有其他原因吗?或者有什么方法可以查看我在 Xcode 中的代码有什么问题吗?

非常感谢!

最佳答案

它说当你编译qam.cpp时,你使用了一个名为_Z12SNRFromSNRdBd的符号(对应于SNRFromSNRdB(double))这是定义了不止一次。

您应该搜索那个函数以及谁在实现它。

注意:要将“损坏的名称”转换为人类可读的,您可以使用 c++filt

bruce@lorien:~$ c++filt _Z12SNRFromSNRdBd
SNRFromSNRdB(double)

关于c++ - 除 'extern' 之外的符号乘法定义的可能原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19397336/

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