g++ 编译c++出现错误

MrThink2Much 2016-03-12 04:41:59
在使用g++ 编译c++时候出现如下两个错误,请问这两个错误之间有联系吗?还是只是独立的两个错我。对于第一个错误,我在头文件里面声明了几个全局函数,实现放在一个cpp文件里面,然后在另一个cpp文件里面包括了该头文件使用这些函数,不知为何会出现这个错误。然后第二个错误我完全摸不着头脑,请各位指教。小弟现在这里谢过了

==============================================================================================
./bin/SpkRegDemo.o:在函数‘__gnu_cxx::new_allocator<std::string>::new_allocator()’中:
/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:10: `RegisterSpeaker(char*)'被多次定义
./bin/SpkRegDemoMain.o:/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:10:第一次在此定义
./bin/SpkRegDemo.o:在函数‘SpeakerRecogniser(char*, double*)’中:
/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:46: `SpeakerRecogniser(char*, double*)'被多次定义
./bin/SpkRegDemoMain.o:/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:46:第一次在此定义
./bin/SpkRegDemo.o:在函数‘DeleteSpeakerModel(char*)’中:
/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:78: `DeleteSpeakerModel(char*)'被多次定义
./bin/SpkRegDemoMain.o:/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:78:第一次在此定义
./bin/SpkRegDemo.o:在函数‘CheckSpeakerModelList()’中:
/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:85: `CheckSpeakerModelList()'被多次定义
./bin/SpkRegDemoMain.o:/home/hammer/SpkReg_v1.0/SpkRegDemo.cpp:85:第一次在此定义
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 20 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 21 has invalid symbol index 22
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:在函数‘_start’中:
(.text+0x18):对‘main’未定义的引用
collect2: error: ld returned 1 exit status
make: *** [all] 错误 1
=============================================================================================
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
renwotao2009 2016-03-14
  • 打赏
  • 举报
回复
引用 4楼dfjy 的回复:
是不是漏了 extent XXXXXXXXXXXXXXXXX?
不是全局变量,不需要用extern
dfjy 2016-03-13
  • 打赏
  • 举报
回复
是不是漏了 extent XXXXXXXXXXXXXXXXX?
renwotao2009 2016-03-13
  • 打赏
  • 举报
回复
你说的我明白了,你看看你的c库版本有没有冲突
MrThink2Much 2016-03-13
  • 打赏
  • 举报
回复
引用 1 楼 renwotao2009 的回复:
重复定义是不是因为你的全局函数被不同的模块引用并编译,这些不同模块链接成了执行程序时,因为两个模块中都有全局函数而引起重复定义
我的全局函数申明在头文件里面,实现代码在另一个cpp文件里面,然后主函数所在的cpp文件包括了这个头文件,在vs里面编译都通过了,而且可以执行,为什么在g++里面不行呢?
renwotao2009 2016-03-12
  • 打赏
  • 举报
回复
重复定义是不是因为你的全局函数被不同的模块引用并编译,这些不同模块链接成了执行程序时,因为两个模块中都有全局函数而引起重复定义

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧