免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4713 | 回复: 5
打印 上一主题 下一主题

[C++] C++编译遇到多重定义的问题,从源代码来看只定义了一次啊!谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-07 18:45 |只看该作者 |倒序浏览
编译一个短代码,Makefile是用工具生成的,编译时却产生如下错误:
cores.o(.text+0x0): In function `triangulate(myParams*, int, float**, float*, float*, float*, float*)':
: multiple definition of `triangulate(myParams*, int, float**, float*, float*, float*, float*)'
cores.o(.text+0x0): first defined here
cores.o(.text+0x480): In function `linearize_positions(int, int, float**, float*, float**, float*)':
: multiple definition of `linearize_positions(int, int, float**, float*, float**, float*)'
cores.o(.text+0x480): first defined here
cores.o(.text+0x660): In function `compute_dop(float**, float*, long, long)':
: multiple definition of `compute_dop(float**, float*, long, long)'
cores.o(.text+0x660): first defined here
cores.o(.text+0x7f0): In function `ls_trad(float**, float*, long, long, float*)':
: multiple definition of `ls_trad(float**, float*, long, long, float*)'
cores.o(.text+0x7f0): first defined here
cores.o(.text+0xaf0): In function `triang_err_msg(myParams*)':
: multiple definition of `triang_err_msg(myParams*)'
cores.o(.text+0xaf0): first defined here
cores.o(.text+0x610): In function `apply_weights(float**, float*, float*, long,
long)':
: multiple definition of `apply_weights(float**, float*, float*, long, long)'
cores.o(.text+0x610): first defined here
cores.o(.text+0x200): In function `hoptriangulate(myParams*, int, float**, float*, float*, float*, float*)':
: multiple definition of `hoptriangulate(myParams*, int, float**, float*, float*, float*, float*)'
cores.o(.text+0x200): first defined here
cores.o(.text+0x560): In function `hoplinearize_positions(int, int, float**, float*, float**, float*)':
: multiple definition of `hoplinearize_positions(int, int, float**, float*, float**, float*)'
cores.o(.text+0x560): first defined here
cores.o(.text+0xac0): In function `ls_qr(float**, float*, long, long)':
: multiple definition of `ls_qr(float**, float*, long, long)'
cores.o(.text+0xac0): first defined here
cores.o(.text+0xad0): In function `ls_svd(float**, float*, long, long)':
: multiple definition of `ls_svd(float**, float*, long, long)'
cores.o(.text+0xad0): first defined here
cores.o(.text+0xae0): In function `mmse(myParams*, myScenario*, int)':
: multiple definition of `mmse(myParams*, myScenario*, int)'
cores.o(.text+0xae0): first defined here
pos_tools.o(.text+0x0): In function `randnum(long)':
: multiple definition of `randnum(long)'
pos_tools.o(.text+0x0): first defined here
pos_tools.o(.text+0x40): In function `nrand(float)':
: multiple definition of `nrand(float)'
pos_tools.o(.text+0x40): first defined here
pos_tools.o(.text+0xd0): In function `matrix(long, long, long, long)':
: multiple definition of `matrix(long, long, long, long)'
pos_tools.o(.text+0xd0): first defined here
pos_tools.o(.text+0x270): In function `nrerror(char const*)':
: multiple definition of `nrerror(char const*)'
pos_tools.o(.text+0x270): first defined here
pos_tools.o(.text+0x1a0): In function `imatrix(long, long, long, long)':
: multiple definition of `imatrix(long, long, long, long)'
pos_tools.o(.text+0x1a0): first defined here
pos_tools.o(.text+0x2e0): In function `free_matrix(float**, long, long, long, long)':
: multiple definition of `free_matrix(float**, long, long, long, long)'
pos_tools.o(.text+0x2e0): first defined here
pos_tools.o(.text+0x330): In function `free_imatrix(int**, long, long, long, long)':
: multiple definition of `free_imatrix(int**, long, long, long, long)'
pos_tools.o(.text+0x330): first defined here
pos_tools.o(.text+0x380): In function `print_matrix(float**, long, long, long, long)':
: multiple definition of `print_matrix(float**, long, long, long, long)'
pos_tools.o(.text+0x380): first defined here
pos_tools.o(.text+0x410): In function `print_ivector(int*, long, long)':
: multiple definition of `print_ivector(int*, long, long)'
pos_tools.o(.text+0x410): first defined here
pos_tools.o(.text+0x470): In function `set_matrix(float**, long, long, long, long)':
: multiple definition of `set_matrix(float**, long, long, long, long)'
pos_tools.o(.text+0x470): first defined here
pos_tools.o(.text+0x4e0): In function `zero_matrix(float**, long, long, long, long)':
: multiple definition of `zero_matrix(float**, long, long, long, long)'
pos_tools.o(.text+0x4e0): first defined here
pos_tools.o(.text+0x540): In function `vector(long, long)':
: multiple definition of `vector(long, long)'
pos_tools.o(.text+0x540): first defined here
pos_tools.o(.text+0x5a0): In function `free_vector(float*, long, long)':
: multiple definition of `free_vector(float*, long, long)'
pos_tools.o(.text+0x5a0): first defined here
pos_tools.o(.text+0x5d0): In function `ivector(long, long)':
: multiple definition of `ivector(long, long)'
pos_tools.o(.text+0x5d0): first defined here
pos_tools.o(.text+0x630): In function `free_ivector(int*, long, long)':
: multiple definition of `free_ivector(int*, long, long)'
pos_tools.o(.text+0x630): first defined here
pos_tools.o(.text+0x660): In function `inv_matrix(float**, long, float**)':
: multiple definition of `inv_matrix(float**, long, float**)'
pos_tools.o(.text+0x660): first defined here
pos_tools.o(.text+0x8c0): In function `ludcmp(float**, int, int*, float*)':
: multiple definition of `ludcmp(float**, int, int*, float*)'
pos_tools.o(.text+0x8c0): first defined here
pos_tools.o(.text+0xb70): In function `lubksb(float**, int, int*, float*)':
: multiple definition of `lubksb(float**, int, int*, float*)'
pos_tools.o(.text+0xb70): first defined here
pos_tools.o(.text+0x7c0): In function `transpose_matrix(float**, long, long, float**)':
: multiple definition of `transpose_matrix(float**, long, long, float**)'
pos_tools.o(.text+0x7c0): first defined here
pos_tools.o(.text+0x800): In function `mult_matrix(float**, float**, long, long, long, float**)':
: multiple definition of `mult_matrix(float**, float**, long, long, long, float**)'
pos_tools.o(.text+0x800): first defined here
pos_tools.o(.text+0xc80): In function `qrdcmp(float**, float**, float**, long, long)':
: multiple definition of `qrdcmp(float**, float**, float**, long, long)'
pos_tools.o(.text+0xc80): first defined here
pos_tools.o(.text+0xde0): In function `solveQRb(float**, float**, float*, long,
long, float*)':
: multiple definition of `solveQRb(float**, float**, float*, long, long, float*)'
pos_tools.o(.text+0xde0): first defined here
pos_tools.o(.text+0xfb0): In function `find_array_int(int, int*, int, int)':
: multiple definition of `find_array_int(int, int*, int, int)'
pos_tools.o(.text+0xfb0): first defined here
collect2: ld returned 1 exit status
make: *** [refine] Error 1

主要是两个文件core.cc和pos_tools.cc,我搜索过源码,只定义过一次,没有出现多重定义的情况啊,不知道是怎么回事?
附上Makefile和程序源代码
Makefile是用一个模拟软件提供的工具自动生成的,在源码的localization下面的build文件中,利用sh build就自动生成了。
Makefile中用到的NEDC就是这个模拟软件中的另一个工具!
谢谢!

ps:positif-0.2.tar.gz是源码
    positif_error.tar里面包含了上面的编译过程中的提示信息和源码中用工具自动生成的Makefile

positif-0.2.tar.gz

209.03 KB, 下载次数: 20

positif_error.tar

30 KB, 下载次数: 19

论坛徽章:
0
2 [报告]
发表于 2009-01-07 18:51 |只看该作者
头文件有没有被重复包含啊

论坛徽章:
0
3 [报告]
发表于 2009-01-07 18:59 |只看该作者
谢谢!
头文件没有重复包含啊!
头文件都是用
#ifndef
#define

#endif
处理过的

论坛徽章:
0
4 [报告]
发表于 2009-01-07 22:27 |只看该作者
已经解决,是Makefile的问题!

论坛徽章:
0
5 [报告]
发表于 2009-01-09 08:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2014-04-13 12:20 |只看该作者
回复 4# dengxiaojun1983

可否说一下是你makefile的什么问题吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP