我试图为一台运行 Windows 98 第二版的旧计算机制作程序,但是它们无法运行。
这些程序是用 C++ 编写的,并使用在 Windows Vista 计算机上安装的 MinGW(g++ 版本 4.8.1)进行编译。为了测试,我尝试了这个简单的 Hello World 程序:
#include <iostream>
using namespace std;
int main(){
cout <<"hello world";
return 0;
}
编译时我使用了以下命令:
g++ hello.cpp -o hello.exe
尝试在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版本编译相同命令的代码后,程序可以在Windows 98机器上运行。但是,我不想使用这个古老版本的g++,因为它包含一些有问题的bug。
我还注意到,在旧计算机上用普通c(使用gcc 4.8.1版本编译)制作的类似程序也能正常工作,但我不想使用普通c,因为这需要重写很多c++代码。
所以问题是:我如何使用g++ 4.8.1(或更高版本)编译的c++程序在Windows 98机器上运行?