除了没有在.h中声明,将其声明为'extern'并在.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)