Почему g++ (MinGW-w64) не знает про conio.h и не видит _beginthread из process.h?

69
03 февраля 2022, 11:30

Компилятор - g++ из MinGW-w64 (https://cygwin.com/install.html).

В process.h есть функция _beginthread(). (docs.microsoft.com). При компиляции g++ -o app.exe app_source.cpp выдаётся ошибка:

C:\xcvbnm>g++ -o app.exe appsource.cpp
appsource.cpp: In function 'void thread_proc_example(void*)':
appsource.cpp:14:2: error: '_endthread' was not declared in this scope
  _endthread();
  ^~~~~~~~~~
appsource.cpp:14:2: note: suggested alternative: '_hread'
  _endthread();
  ^~~~~~~~~~
  _hread
appsource.cpp: In function 'int main(int, TCHAR**)':
appsource.cpp:21:2: error: '_beginthread' was not declared in this scope
  _beginthread( thread_proc_example, 0, 0 );
  ^~~~~~~~~~~~
appsource.cpp:21:2: note: suggested alternative: 'OpenThread'
  _beginthread( thread_proc_example, 0, 0 );
  ^~~~~~~~~~~~
  OpenThread
C:\xcvbnm>

Вторая проблема - g++ не знает про conio.h. Что со всем этим можно сделать? И как компилировать в g++ код, хорошо работающий в Visual Studio?

Пример кода, который не компилируется:

#include <windows.h>
#include <process.h>
#include <stddef.h>
#include <stdlib.h>
//#include <conio.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
void __cdecl thread_proc_example( void* param )
{
    _endthread();
    return;
}
int main( int argc, TCHAR* argv[])
{
    MessageBoxA(0, "String 01\n", "String 02\n", MB_ICONINFORMATION);
    _beginthread( thread_proc_example, 0, 0 );
    return 0;
}
Answer 1

Компилятор - g++ из MinGW-w64 (https://cygwin.com/install.html)

Код из вашего примера замечательно компилируется в MinGW-w64 (и там есть так же и conio.h), но по указанной вами ссылке НЕ MinGW-w64.

Дело в том, что под Windows есть 2 порта gcc: один идёт в составе Сygwin, а второй полностью самостоятельный - MinGW-w64 (http://mingw-w64.org/doku.php) (его же использует MSYS2).

MinGW-w64 можно установить тремя способами:

  • через онлайн установщик
  • скачав архив
  • установив окружение msys2

Онлайн установщик и архивы можно найти здесь: https://sourceforge.net/projects/mingw-w64/files/

Соответственно, рекомендую забыть про Cygwin и использовать более современные MinGW-w64 и MSYS2.

READ ALSO
swiper несколько pagination в одном container

swiper несколько pagination в одном container

подскажите, как сделать два и более pagination в одном слайдере

97
jquery: toggleClass для одного из множества элементов

jquery: toggleClass для одного из множества элементов

Задача: при нажатии на кнопку появляется блок, где при нажатии на внутреннюю кнопку должно скрываться/появляться окно и меняться фон кнопки...

159
Иногда не срабатывает OnMouseDown в Unity

Иногда не срабатывает OnMouseDown в Unity

Почему-то иногда не срабатывает OnMouseDownСначала может сработать несколько раз, потом ему просто пофиг на нажатия (глобальные тачи по экрану)

109
Как добавить, чтобы возвращалась VIew?

Как добавить, чтобы возвращалась VIew?

У меня есть View для каждого метода, я сделал чтобы в хедере задавался параметр для возвращения, а как сделать, чтобы была VIEW?

99