关于 QtCreartor编写纯C++程序调用不到C++某些标准库和枚举以及运行错误 的解决方法

45 篇文章 13 订阅

需求

        使用高于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++的跨平台方案。

正常使用截图



2018年3月31日补充

         感谢网友“十万个为什猫”进一步研究,mingw运行程序出现“已停止程序”的错误是因为:
        
        最终一起确认如下:
           1.流在gnu不能使用
           2.mingw确实有一些枚举和函数用.操作符操作不出来,但是可以运行
        结论:不建议使用mingw作为c++stl的开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙红胖子Qt(长沙创微智科)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值