G++ g++;适用于windows 98的程序

G++ g++;适用于windows 98的程序,g++,mingw,windows-98,G++,Mingw,Windows 98,我正在尝试为一台运行Windows98第二版的旧计算机制作程序,但它们不会运行 程序是用C++编写的,它们是用Windows Vista计算机上安装的MIW(G+4.4.1版)编译的。为了进行测试,我尝试了这个简单的Hello World程序: #include <iostream> using namespace std; int main(){ cout <<"hello world"; return 0; } 尝试在Windows 98计算机上

我正在尝试为一台运行Windows98第二版的旧计算机制作程序,但它们不会运行

程序是用C++编写的,它们是用Windows Vista计算机上安装的MIW(G+4.4.1版)编译的。为了进行测试,我尝试了这个简单的Hello World程序:

#include <iostream>

using namespace std;

int main(){
    cout <<"hello world";
    return 0;
}
尝试在Windows 98计算机上运行此程序时,我收到以下消息:

A required .DLL file, LIBGCC_S_DW2-1.DLL, was not found.
因此,为了使可执行文件尽可能独立于dll文件,我尝试使用以下命令编译程序:

g++ hello.cpp -static -o hello.exe
但是,在Windows 98计算机上尝试该程序时,我现在得到的信息是:

The hello.exe file is linked to missing export MSVCRT.DLL:_fstat64
为了分析这个问题,我尝试了一些方法。我注意到,使用g++2.95.2版使用相同的命令编译相同的代码,该程序能够在Windows98机器上运行。但是,我不希望使用这个旧版本的g++,因为它包含一些有问题的bug

<>我也注意到,在C中编写的类似程序(用GCC版本4.8-1编译)在旧计算机上也很好,但是我不喜欢使用常规C,因为这需要重写大量C++代码。p>
问题是:如何使用G+4.4.1(或更高版本)编译的C++程序在Windows 98机器上运行?

,通常可以通过安装IE4BR>查找MSVCR.DLL。


迟到总比不迟到好

发现更高版本的MinGW不能在windows 98上运行,出现错误“未找到必需的.DLL文件LIBGCC_S_DW2-1.DLL。”

我尝试过的MinGW版本,给出的错误是这个版本(6.3.0-1)

(我想您指的是那里的开发版本,可能您使用的bin版本更现代)

奇怪的是,我记得不久前我使用运行在windows 98中的MinGW编译了一个使用Code::Blocks的构建,所以我下载了Code::Blocks版本17.12,并直接使用那里提供的MinGW编译了完全相同的exe,并且工作得很好

并注意到它是一个相当旧的版本((tdm-1)5.1.0)

idk是在Windows98上运行的最新版本的MinGW编译,我很快会在他们的论坛上写一篇关于它的帖子

为了记录在案,我将展示我做的测试的照片

在MinGW 6.3.0-1上:

在MinGW(tdm-1)5.1.0上:

那么,回答这个问题,;是的,您可以使用MinGW的g++为windows 98制作大于4.8.1版的程序(在特定版本之前,我会在论坛中询问更多信息)

编辑:无需,找到以下内容:

默认模式为GC++版本前的C++ 98,GCC 6.1和以上的C++ 14,可以使用命令行标志STD明确指定C++标准。例如,

-std=c++98, or -std=gnu++98 (C++98 with GNU extensions)
-std=c++11, or -std=gnu++11 (C++11 with GNU extensions)
-std=c++14, or -std=gnu++14 (C++14 with GNU extensions), default mode for GCC 6.1 and above.
-std=c++17, or -std=gnu++17 (C++17 with GNU extensions), experimental.
-std=c++2a, or -std=gnu++2a (C++2a with GNU extensions), experimental."

我在-3.3.0-1编译器中添加了-STD= C++ 98—STD= GNU+98个标志,在Windows 98 SE /P>上运行良好。你尝试安装微软C++重新分发吗?不。是唯一的方法吗?LIGBCC是一个明确的运行库,如果缺少的话,通常是用户的责任。假设已经是隐含的。如果启用了,我可以想象一些情况会阻止它工作,而较低的语言标准会以某种方式使用不同的代码路径。
-std=c++98, or -std=gnu++98 (C++98 with GNU extensions)
-std=c++11, or -std=gnu++11 (C++11 with GNU extensions)
-std=c++14, or -std=gnu++14 (C++14 with GNU extensions), default mode for GCC 6.1 and above.
-std=c++17, or -std=gnu++17 (C++17 with GNU extensions), experimental.
-std=c++2a, or -std=gnu++2a (C++2a with GNU extensions), experimental."