LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 586|回复: 4

这样的错误该如何检查?

[复制链接]
发表于 2004-12-10 22:15:27 | 显示全部楼层 |阅读模式
连接的时候出现这样的错误,看起来是cmd__list被重复定义了,cmd__list在代码中只出现过两次,而且定义的时候被包含在

  1. #ifndef
  2. #define
  3. #endif
复制代码

之间,不应该这样阿,我应该如何着手检查?


  1. g++ -g -Wno-deprecated main.o crypt.o login_logout.o packet.o proxy.o send.o receive.o runing.o wait_list.o operator.o  -o qq
  2. crypt.o(.data+0x0): In function `memdup(unsigned char*, int)':
  3. /home/gray/noq/src/crypt.cpp:75: multiple definition of `cmd__list'
  4. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
  5. login_logout.o(.data+0x0):/home/gray/noq/src/login_logout.cpp:33: multiple definition of `cmd__list'
  6. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
  7. packet.o(.data+0x0): In function `create_packet_data(unsigned char*, unsigned char**, unsigned char*, int)':
  8. /home/gray/noq/src/packet.cpp:26: multiple definition of `cmd__list'
  9. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
  10. proxy.o(.data+0x0): In function `qq_proxy_write(int, unsigned char*, int)':
  11. /home/gray/noq/src/proxy.cpp:12: multiple definition of `cmd__list'
  12. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
  13. send.o(.data+0x0): In function `_qq_send_packet(int, unsigned char*, int, unsigned short)':
  14. /home/gray/noq/src/send.cpp:12: multiple definition of `cmd__list'
  15. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
  16. receive.o(.data+0x0):/home/gray/noq/src/receive.cpp:28: multiple definition of `cmd__list'
  17. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
  18. runing.o(.data+0x0):/home/gray/noq/src/runing.cpp:15: multiple definition of `cmd__list'
  19. main.o(.data+0x0):/home/gray/noq/src/main.cpp:8: first defined here
复制代码
发表于 2004-12-10 23:26:12 | 显示全部楼层
您只写了个
  1. #ifndef
  2. #define
  3. #endif
复制代码
还是写成这样:
  1. #ifndef YOUR_H_
  2. #define YOUR_H_
  3. #endif
复制代码
 楼主| 发表于 2004-12-10 23:55:22 | 显示全部楼层
最初由 herberteuler 发表
您只写了个
  1. #ifndef
  2. #define
  3. #endif
复制代码
还是写成这样:
  1. #ifndef YOUR_H_
  2. #define YOUR_H_
  3. #endif
复制代码



不好意思,刚才写帖子的时候懒,我是这么写的,问题不在这里。有什么别的可能?
发表于 2004-12-11 07:24:16 | 显示全部楼层
链接错误和include没有任何关系。
你肯定是在/home/gray/noq/src/crypt.cpp和/home/gray/noq/src/main都定义了cmd_list.

解决的方法是添加static decorator:

static foo_type cmd_list
 楼主| 发表于 2004-12-11 10:42:44 | 显示全部楼层
最初由 bookstack 发表
链接错误和include没有任何关系。
你肯定是在/home/gray/noq/src/crypt.cpp和/home/gray/noq/src/main都定义了cmd_list.

解决的方法是添加static decorator:

static foo_type cmd_list


这个说法是差不多对的,虽然我没有没有在crypt.cpp cmd_list,但是我定义 cmd_list时,竟然放到头文件里了。看来我应该详细编译器的提示啊,昨天就是有点不相信
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表