玩VS 2008玩到呕血!真是血淋淋的教训啊
玩VS 2008玩到吐血!真是血淋淋的教训啊!
刚才写了一个小程序(也不是很小,分成了几个文件,但是很简单),就是定义一个类叫做Battler,然后其中要用到以前定义的一个类,叫做Person,于是我就把以前的Person的.h文件(interface部分)和.cpp文件(implementation部分)直接拷进新项目的文件夹里了。然后我在项目里打开这两个文件,然后小心翼翼地敲打代码,结果在一个小小的试验程序里出现了神奇的事情!就是编译的时候是没有问题的,但是运行的时候会报错,一大堆不知所云的东东,头几个字母是:
unresolved external symbol
上网查了查,错误原因太多了,而且也不像是我应该会犯的。然后我找到了一个比较靠谱的解释:在没有派生类的情况下定义了一个virtual函数。我确实这样做了,可是后来我把那个函数给注释掉了呀!难道错误还会遗传?这不科学!
我又怀疑是我拷进来的Person的两个文件没有进行build的缘故,可是进入person.cpp里后,没有给我build的选项啊!难道是因为我以前在其他的程序里build过了的缘故?这也太神奇了吧!
最后百般无奈之下(此前略去2300字),我一咬牙,一跺脚,一狠心,将这两个文件从新的项目文件夹中删除了,然后新建了两个文件,将以前的那两个文件中的内容拷进新的文件中,然后这次神奇的事情发生了!这次person.cpp有-B-U-I-L-D-的-选-项-了!而且这次那个小小的试验程序也可以正常运行了!Oh, my god!肿么可以这样!我顿时吐血三升
然后我命不久矣了……在这最后的24小时内,我忍着心灵的折磨,码了这么多字,告诉还在使用VS 2008的同学们————————你-们-多-保-重!老朽先走一步了……
------解决方案--------------------
关键在这里,你只是打开了,但并没有添加到工程中啊。
------解决方案--------------------
在vs的资源管理器(就是列出你的工程的全部文件的列表的那个)里面选择你的工程,在上面点击右键,选择菜单里面的添加->现有项,选择你要添加的文件,保存工程
------解决方案--------------------
很明显你是没把cpp文件给添加到工程里面,即使gcc等各编译器也是要求你塞入需要的c or cpp files,否则也会一样的错误
------解决方案--------------------
这个真不怪VS……你项目里面没添加相应文件,光打开是不行的
刚才写了一个小程序(也不是很小,分成了几个文件,但是很简单),就是定义一个类叫做Battler,然后其中要用到以前定义的一个类,叫做Person,于是我就把以前的Person的.h文件(interface部分)和.cpp文件(implementation部分)直接拷进新项目的文件夹里了。然后我在项目里打开这两个文件,然后小心翼翼地敲打代码,结果在一个小小的试验程序里出现了神奇的事情!就是编译的时候是没有问题的,但是运行的时候会报错,一大堆不知所云的东东,头几个字母是:
unresolved external symbol
上网查了查,错误原因太多了,而且也不像是我应该会犯的。然后我找到了一个比较靠谱的解释:在没有派生类的情况下定义了一个virtual函数。我确实这样做了,可是后来我把那个函数给注释掉了呀!难道错误还会遗传?这不科学!
我又怀疑是我拷进来的Person的两个文件没有进行build的缘故,可是进入person.cpp里后,没有给我build的选项啊!难道是因为我以前在其他的程序里build过了的缘故?这也太神奇了吧!
最后百般无奈之下(此前略去2300字),我一咬牙,一跺脚,一狠心,将这两个文件从新的项目文件夹中删除了,然后新建了两个文件,将以前的那两个文件中的内容拷进新的文件中,然后这次神奇的事情发生了!这次person.cpp有-B-U-I-L-D-的-选-项-了!而且这次那个小小的试验程序也可以正常运行了!Oh, my god!肿么可以这样!我顿时吐血三升
然后我命不久矣了……在这最后的24小时内,我忍着心灵的折磨,码了这么多字,告诉还在使用VS 2008的同学们————————你-们-多-保-重!老朽先走一步了……
------解决方案--------------------
关键在这里,你只是打开了,但并没有添加到工程中啊。
------解决方案--------------------
在vs的资源管理器(就是列出你的工程的全部文件的列表的那个)里面选择你的工程,在上面点击右键,选择菜单里面的添加->现有项,选择你要添加的文件,保存工程
------解决方案--------------------
很明显你是没把cpp文件给添加到工程里面,即使gcc等各编译器也是要求你塞入需要的c or cpp files,否则也会一样的错误
------解决方案--------------------