一件很搞笑的事情

dadafeng 2003-01-10 03:20:43
我在程序里使用了定义全局变量的方法(情非得以),编译联结总是说link2005错误就是说我的那个全局变量重复定义了,查了几遍也没发现有什么逻辑错误,高的我很恼火。气氛之余,狂点build,这时奇迹出现了,连接通过了。
之后我redo了几次,第一次link会出错,之后什么都不做,在点一次build,Run,一切OK!!

我相信应该没有这么好笑的事情,请明白原理的大虾指点一二
...全文
33 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
dadafeng 2003-01-13
  • 打赏
  • 举报
回复
release并不保存obj文件,当然也就不会出现obj文件不再被重新编译的问题。看全了再回帖
zx_sanjin 2003-01-13
  • 打赏
  • 举报
回复
这种原因是编译器为了优化速度如果认为源文件没有改变就不再重新生成obj文件,这可能是有很多因素造成的,不应该全部归结为编译器的问题。解决的办法是把.ncb文件删除,把debug和release目录全部删除再重新编译,如果仍存在问题,那就是你的程序代码有问题了。

release版不能通过我想跟obj的编译没有直接关系,肯定是程序存在其他隐患,好好的检查你的代码吧。

good luck
dadafeng 2003-01-13
  • 打赏
  • 举报
回复
谢谢大家!!
自己瞎搞过一段时间,发现release版的不能通过,我猜到可能是obj没有重编译的问题。后来因为没时间就放弃了JJONY() once168(once168) taolei说的很对,多谢!
once168 2003-01-11
  • 打赏
  • 举报
回复
这不是VC的错,因为你确实定义了两个对象并且起名也一样,连接器不知道你将连接到哪个对象,即使你第二编译通过程序也运行不对!因为编译器连接的代码并不是同一个对象(至少有一个对象多余)

改法:在全局变量引用前加extern,只有在变量的实际声名处不要extern,这样其它位置的将引用同一变量
taolei 2003-01-11
  • 打赏
  • 举报
回复
once168说的对。
记住:不要在.h文件里定义变量实例。全局变量要放在某个cpp里,其他cpp里可以用extern引用。
用户 昵称 2003-01-10
  • 打赏
  • 举报
回复
try delete all object files and rebuilder all
zhenxizhou 2003-01-10
  • 打赏
  • 举报
回复
VC6编译器的问题不少
shitalone 2003-01-10
  • 打赏
  • 举报
回复
楼上的推断好象有些道理。

-------------------------------------------
第一次编译就不通过,在两个OBJ文件中存在相同的变量名

相同名称的全局变量?那程序就有问题了。
那最起码得把你的全局变量的名称改一个了。

---------------------------------------------
冬瓜有没有试试换个变量名?



zhang_zhibin 2003-01-10
  • 打赏
  • 举报
回复
想再看到这个错误可以把存放.OBJ文件的目录全删除,重新编译就都出来了。
JJONY 2003-01-10
  • 打赏
  • 举报
回复
这样的问题我也经常碰到,往往是在窗口中加入OCX所产生的.h和.cpp
我这样认为的:
第一次编译就不通过,在两个OBJ文件中存在相同的变量名
第二次就行了,因为在原来的有变量名的obj文件没有进行编译(第一次编译好了)
再编译另一个有变量名的obj文件时就能过了。
zhang_zhibin 2003-01-10
  • 打赏
  • 举报
回复
不过VC好像是用时间来控制的,如果一个文件的OBJ文件日期大于此文件最后编辑的日期,则重新编译,否则就不用了。
zhang_zhibin 2003-01-10
  • 打赏
  • 举报
回复
已经编译过的文件,如果没有重新编辑过,而且它所包含的文件也没有编辑的话,VC不会去重新编译这个文件,加快了速度。
sunjun240 2003-01-10
  • 打赏
  • 举报
回复
我有时也碰到一些很莫名其妙的问题!
瞎搞几下也就好了!
如楼上所说:无言以对!
JoshuaLi 2003-01-10
  • 打赏
  • 举报
回复
gz
HuWenjin 2003-01-10
  • 打赏
  • 举报
回复
无言以对
shitalone 2003-01-10
  • 打赏
  • 举报
回复
冬瓜?
呵呵,好久没到我这报到了,做开发很专心哦
CQP 2003-01-10
  • 打赏
  • 举报
回复
我也碰到类似这种问题,一直还想不通呢。
manbug 2003-01-10
  • 打赏
  • 举报
回复
这种情况我也遇到过,只不过,重建就行了,把程序全部重编译一哈,就好了的,呵呵.
ruihuahan 2003-01-10
  • 打赏
  • 举报
回复
gz
m_pDelphi 2003-01-10
  • 打赏
  • 举报
回复
以我多次遇到这种超自然现象的经验判断,我相信是你的错误,不是编译器的错误,这种类似的错误我遇到过很多次了,刚开始都是一口咬定是编译器有问题,但后来几乎每次都发现原来还是我错了,兄弟,怀疑一切是对的,但一般情况下,还是相信这些工业级的工具吧。
加载更多回复(8)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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