我写了一个函数放到了一个h文件中,在mfc项目的stdafx.h中添加了包含 出现链接错误LNK2005

外星人oo 2008-01-04 11:10:30
我写了一个函数放到了一个abc.h文件中,在mfc项目的stdafx.h中添加了包含abc.h ,则 出现链接错误LNK2005

如不放到stdafx.h中,而直接在使用这个函数的cpp文件里包含这个abc.h 就不会有错
...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
外星人oo 2008-01-23
  • 打赏
  • 举报
回复
谢谢各位的热心帮助
我是在学习wtl
wtl没有cpp文件,所有实现都写在了h文件里面
却没有这种问题呢?
VcGreenhand 2008-01-14
  • 打赏
  • 举报
回复
编译器是编译每个cpp文件,你在abc.h里面写了函数的实现,afx.h里面include了abc.h,
而有很多gecpp文件include了afx.h,也就是很多个cpp文件里面有这个函数的实现,
在链接器链接时就会发现有多个同名函数,所以会报错.

如果最终只有一个cpp文件include了abc.h则不会出错,或者在abc.h中将函数申明为inline.
queshangxintou 2008-01-14
  • 打赏
  • 举报
回复
编译器认为你对函数没有作声明,所以会 出错,加上inline就说明你的函数是个内联函数,这样编译器就会认为你是在声明时加的函数体。
外星人oo 2008-01-12
  • 打赏
  • 举报
回复
#ifndef _ABCFUNC
#define _ABCFUNC
在此处添加函数定义
#endif
已经加上了 用的是 #pragma once

加入 使用inline. 确实解决了问题 还请 xyzhaopeng 讲讲为什么



cdsnpeter 2008-01-09
  • 打赏
  • 举报
回复
使用inline.
外星人oo 2008-01-04
  • 打赏
  • 举报
回复
谢谢帮助,abc.h
中有函数实现,但没有全局变量
  • 打赏
  • 举报
回复
你这个abc.h有函数实现么?
有没有定义全局变量?
luohongming 2008-01-04
  • 打赏
  • 举报
回复
#ifndef _ABCFUNC
#define _ABCFUNC
在此处添加函数定义
#endif

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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