Задать вопрос
@SkyDatter

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

Здравствуйте! Не могу разобраться, как скомпилировать программу в g++ (MinGW-w64) для Windows. Компилирую так:
g++ -o app.exe app_source.cpp
g++ ругается, что не найден файл conio.h. Помимо этого, в файле process.h должно быть объявление функции _beginthread. Об этом написано на microsoft.com.
Вывод компилятора:
spoiler
C:\xcvbnm>cmd.exe
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\xcvbnm>g++ -o app.exe appsource.cpp
appsource.cpp:6:10: fatal error: conio.h: No such file or directory
 #include <conio.h>
          ^~~~~~~~~
compilation terminated.

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>

Хочу построить приложение, использующее только i386, которое не тянет за собой никаких библиотек (вроде cygwin1.dll), и у которого crt будет слинковано статически, то есть чтобы можно было запустить и на win98, и на win10.
Что сделать чтобы всё компилировалось? Или что почитать, чтобы разобраться?

Исходник:
spoiler
#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;
}
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
Radjah
@Radjah
conio.h: No such file or directory
Нет такого файла в /usr/include твоей установки.
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
g++ ругается, что не найден файл conio.h. Помимо этого, в файле process.h должно быть объявление функции _beginthread. Об этом написано на microsoft.com.

MinGW реализует стандарты С/С++ и расширения GNU. micro$oft может написать на своём сайте всё что угодно, это не делает написанное стандартом.

у которого crt будет слинковано статически

g++ -static
См.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы