找回密码
 立即注册
收起左侧

注意!请不要使用不同于构建套件的编译器编译的库

2
回复
8246
查看
[复制链接]
累计签到:894 天
连续签到:1 天
来源: 2014-5-6 16:17:44 显示全部楼层 |阅读模式
1Qter豆
几周之前,做了一个opencv的项目A,环境是Qt4.8.5+Creator2.8.0+mingw4.4.0。
opencv2.4.0就是在上述环境下编译的。
项目做完了,就没有管。

中间系统还原了,然后就装了新版本的环境,Qt4.8.6+Creator3.1.0+mingw4.8.2。
然后我发了这个帖子。
资源发布:GCC4.8.2编译Creator3.1.0、QWT6.1.0和OpenCV2.4.0
后来就用上述环境做了一个课程实验项目B,实验中用到了opencv。
昨天开始修改项目A,开始的时候还能运行(可能是因为我没有重新构建,我只是改的界面,修改内容没有涉及与opencv有关的文件),后来就出现错误了,程序异常退出,代码-10*****什么的。
百度了一下,说什么内存的问题,我就把程序改了回去(有点后悔,没有备份,大家以后在修改项目之前一定要备份原来的)。
但是程序还是异常退出,代码还是上面的那个。

我决定把环境改回去,又安装了Qt4.8.5+Creator2.8.0,但是程序还是那个退出代码。(原因可能是opencv还是Qt4.8.6+mingw4.8.2编译的缘故)。

昨晚我又决心把系统还原。
今早我又重新安装的Qt4.8.5+Creator2.8.0+mingw4.4.0,我想把opencv2.4.0重新编译一下,因为我发现我把之前的删除掉了。上课前开始编译,2小时后回来,编译失败。

午饭前又开始编译,下午回来依旧失败了。(我不明白是哪里出现了问题,冏)

后来,我想我应该把之前编译的opencv(用Qt4.8.5、mingw4.4.0编译的)放到百度网盘了,于是我开始找。I find it!

于是我下载下来,修改项目,debug,项目A可以运行了。
我同时测试了以下,项目B,但是它不能正常运行了,退出代码0,貌似很正常。

我想了想,应该是这样的原因吧。

因为
Qt4.8.5+Creator2.8.0+mingw4.4.0 + opencv2.4.0(用Qt4.8.5+mingw4.4.0编译的)---> 项目A
Qt4.8.6+Creator3.1.0+mingw4.8.2 + opencv2.4.0(用Qt4.8.6+mingw4.8.2编译的)---> 项目B

所以
Qt4.8.5+Creator2.8.0+mingw4.4.0 + opencv2.4.0(用Qt4.8.6+mingw4.8.2编译的)---> 项目A不能运行
Qt4.8.5+Creator2.8.0+mingw4.4.0 + opencv2.4.0(用Qt4.8.6+mingw4.8.2编译的) ---> 项目B不能运行

Qt4.8.5+Creator2.8.0+mingw4.4.0 + opencv2.4.0(用Qt4.8.5+mingw4.4.0编译的)---> 项目A可以运行

所以结论是,
用哪个版本的Qt和mingw编译的库,就用哪个版本的Qt和mingw作为构建套件。

不足之处,还请指出。




最佳答案

查看完整内容

的确是这么回事,我也试过,就是库和编译器一定要对应
回复

使用道具 举报

尚未签到

2014-5-6 16:17:45 显示全部楼层
的确是这么回事,我也试过,就是库和编译器一定要对应
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2014-5-6 20:12:13 显示全部楼层
Joey_Chan 发表于 2014-5-6 17:41
的确是这么回事,我也试过,就是库和编译器一定要对应

嗯,要是早知道这回事,我就少走一段弯路了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了