WinMain не вызывается до main (проблема точки входа в программу C / C ++) - PullRequest
0 голосов
/ 12 апреля 2010

У меня сложилось впечатление, что этот код

#include <windows.h>

#include <stdio.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    printf("WinMain\n");

    return 0;
}

int main()
{
    printf("main\n");

    return 0;
}

выдаст WinMain, но, конечно, ничего не получится так, как вы ожидаете.

В любом случае, может, кто-нибудь подскажет, как заставить эту программу запускать WinMain вначале (у меня есть причина использовать оба). Я запускаю Windows 7 с Mingw, если это поможет.

Ответы [ 3 ]

5 голосов
/ 12 апреля 2010

Вам нужно поставить -mwindows в командной строке при вызове MinGw. Отметьте this как небольшое введение в программирование Windows с MinGW.

Также: у вас не может быть двух точек входа в исполняемом файле, поэтому вы, вероятно, не можете делать то, что хотите.

4 голосов
/ 12 апреля 2010

Компилятор выберет одну или другую точку входа в зависимости от того, нацелены ли вы на скомпилированный вывод в подсистему Windows или консольную подсистему. WinMain для первого, main для второго.

0 голосов
/ 21 апреля 2010

Только что нашел эту работу и чувствую себя глупо.

#define main USER_Main

Это затем выводит main из строя за то, что он является точкой входа в программы, и в то же время скрывает тот факт, что что-то было запутано пользователем.

...