踩完的坑,只有记录下来对未来才有帮助。没有经验,只有不断积累。
简单介绍一下吧,这是一次编程培训,老师花了三周的时间为我们设计好了软件的四个模块并且定义好了接口和具体的参数,分别是
1. 文件读写模块(加载数据和保存数据)
2. 数据管理模块(存放读入的数据)
3. 算法模块(力引导算法,对数据赋随机初始值,处理后得到平衡值)
4. 画图模块(这里用到QT的支持,GUI界面
没有经验,向学长求助,拿到了学长的源代码,本以为马上就能上手,结果在项目环境配置上栽大了。花费了很多时间来查找错误,事后看看这些错误,觉得十分低级,既然已经犯了,补救措施就是未来不要再犯。
-
项目运行版本的问题
这里主要是项目在不同版本的VS环境下生成,因此配置文件中的内容不同。
比如说,VS2010 对应 格式(Format)11.0,工具集v100,版本(ToolVersion)4.0,
而, VS2017格式(Format)12.0,工具集v141,版本(ToolVersion)15.0,
如果配置文件和打开的版本不匹配就会报错,这样的错易于察觉,很好处理。
-
库文件问题
这里用的时间最多。项目里include了很多第三方库,这些在本地的库文件里可能没有,缺什么补什么这个好理解。比较难受的是某些库文件冲突了。
一个要命的Warning导致了好几个LinkError,我花了几天的工夫才找到冲突的根源。起因是这样的,VS2017工具的库目录设置中继承了一些父系的库,(我没有注意到这一点),我在项目直属的\VC\lib\X64库中加入了我认为必须的库文件,附加库添加了QT的目录。然而每次程序一运行就是“X86的库文件和目标X64计算机冲突”引起了一堆变量没有定义报错。大概知道是库文件缺少引起了,但我明明加了啊,什么鬼?在网上查了一番,试了很多方法都没有起作用,苦恼了很久。
最后,偶然自己发现了问题。引入的库目录太多了,我于是进入到每个库目录中具体查看,发现了\Window Kit\lib中存在和我直属库重复的库文件,再看了一下QT的库,还有重复的库文件,我试着删除了重复的库文件,编译通过。就这么一个问题,看了好多篇CSDN的文章找问题,都没有解决。希望可以帮到有需求的人。
具体情况是:\Window Kit\lib有GLU32.lib,QT库中有GLU32.lib,glut32.lib这两个库,而我在直属库再次添加GLU32.lib,glut32.lib这两个库。解决方法是删除掉直属库中两个.lib文件,QT库保留glut32.lib。冲突解决,LINK ERROR消失。
希望帮到更多的人。