需求
使用高于Qt5版本QtCreator编写纯C++程序。
测试代码
// ios::exceptions
#include <iostream> // std::cerr
#include <fstream> // std::ifstream
using namespace std;
int main () {
std::ifstream file;
file.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
try{
file.open ("test.txt");
while (!file.eof()) file.get();
file.close();
}
catch (std::ifstream::failure e) {
std::cerr << "Exception opening/reading/closing file\n";
}
return 0;
}
问题
无法提示调出C++基本库,强制编译可通过但是无法运行成功,具体查看下列截图:
截图1:无法调出C++基本库
截图2:编译不报错,运行出错
原因
上面运行错误,是使用mingw编译器,使用mingw在qt中可以跨win/linux但不完美支持标准C++库,而msvc编译器使用了标准C++库又无法跨linux。
Qt中编写跨平台程序,调用了标准的C++库,mingw中没有,那么跨平台代码会有问题,从项目上来说,最好是依赖Qt本身的,不要过多依赖C++标准库。
尝试Qt版本:5.2 5.9.3 5.10。
解决方法
使用msvc编译器即可,mingw编译目前笔者没有找到好的方法,欢迎读者提供在Qt中使用纯C++的跨平台方案。
正常使用截图
感谢网友“十万个为什猫”进一步研究,mingw运行程序出现“已停止程序”的错误是因为:
1.流在gnu不能使用
2.mingw确实有一些枚举和函数用.操作符操作不出来,但是可以运行
结论:不建议使用mingw作为c++stl的开发。
版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/hongpangzi/3612899,作者:长沙红胖子Qt,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。