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

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

需求

       使用高于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++基本库


图片.png

截图2:编译不报错,运行出错


图片.png


原因

       上面运行错误,是使用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++的跨平台方案。


正常使用截图

图片.png

图片.png


2018年3月31日补充

        感谢网友“十万个为什猫”进一步研究,mingw运行程序出现“已停止程序”的错误是因为:

        图片.png

       最终一起确认如下:

          1.流在gnu不能使用

          2.mingw确实有一些枚举和函数用.操作符操作不出来,但是可以运行

       结论:不建议使用mingw作为c++stl的开发。


相关文章
|
15天前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
50 6
|
27天前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
81 10
|
22天前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
75 21
|
15天前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
54 5
|
15天前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
37 1
|
2月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
34 6
|
2月前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
43 5
|
2月前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
29 1
|
2月前
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
66 1
|
2月前
|
存储 算法 安全
超级好用的C++实用库之国密sm4算法
超级好用的C++实用库之国密sm4算法
43 0