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)
(я думаю, что вы имеете в виду версию dev, вероятно, версия бина, которая была у вас, была более современной)
как ни странно, я вспомнил, что в то время назад я компилировал сборку, используя Code::Blocks, используя MinGW, который работал в Windows 98, поэтому я скачал Code::Blocks версии 17.12, и скомпилировал тот же самый exe-файл, используя предоставленный там MinGW, и работал просто отлично
и заметил, что это была довольно старая версия ((tdm-1) 5.1.0)
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