g++ программы для windows 98

Я пытаюсь создавать программы для старого компьютера под управлением Windows 98 второго издания, но они не запускаются.

Программы написаны на C++ и скомпилированы с MinGW (g++ версии 4.8.1), установленной на компьютере под управлением Windows Vista. Для тестирования я попробовал эту простую программу 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 ++, поскольку она содержит несколько проблемных ошибок.

Я также заметил, что аналогичная программа, созданная в обычном c (скомпилированная с gcc версии 4.8.1), также хорошо работала на старом компьютере, но я бы предпочел не использовать обычный c, так как для этого потребуется переписать много кода на C++.

Итак, вопрос: как я могу заставить программы на с ++, скомпилированные с g++ 4.8.1 (или более поздней версии), работать на компьютере с Windows 98?

2 ответа

Обычно вы можете найти msvcrt.dll, установив IE4
http://gnuwin32.sourceforge.net/packages/gcc.htm

Поздно, но лучше, чем никогда

выяснилось, что более поздние версии MinGW не работают на Windows 98, сообщая об ошибке "Требуемый файл.DLL, LIBGCC_S_DW2-1.DLL, не найден".

версия MinGW, которую я попробовал и дал ошибку, была эта (6.3.0-1) новая версия MinGW

(я думаю, что вы имеете в виду версию dev, вероятно, версия бина, которая была у вас, была более современной)

как ни странно, я вспомнил, что в то время назад я компилировал сборку, используя Code::Blocks, используя MinGW, который работал в Windows 98, поэтому я скачал Code::Blocks версии 17.12, и скомпилировал тот же самый exe-файл, используя предоставленный там MinGW, и работал просто отлично

и заметил, что это была довольно старая версия ((tdm-1) 5.1.0) старая версия MinGW

idk, которая была последней версией MinGW, работала на Windows 98, я скоро напишу об этом на их форуме

для записи, я покажу фото теста, который я сделал

на MinGW 6.3.0-1:

о нет

на MinGW (tdm-1) 5.1.0:

свататься

итак, ответить на вопрос; да, вы можете создавать программы для Windows 98, используя MinGW g++ больше, чем версия 4.8.1 (до определенной версии, я попрошу на форуме дополнительную информацию)

РЕДАКТИРОВАТЬ: нет необходимости, нашел это:

"Режим по умолчанию - C++98 для версий GCC до 6.1 и C++14 для GCC 6.1 и выше. Вы можете использовать флаг командной строки -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."

я добавил флаги -std= C++98 -std=gnu++98 к компилятору 6.3.0-1, и он отлично работал на Windows 98 SE

Другие вопросы по тегам