WinMain não chamado Antes do Main (emissão de ponto de entrada do programa C/C ++)

StackOverflow https://stackoverflow.com/questions/2620031

  •  26-09-2019
  •  | 
  •  

Pergunta

Eu estava com a impressão de que este código

#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;
}

produziria Winmain, mas é claro que nada funciona como você espera.

De qualquer forma, alguém poderia me dizer como fazer com que esse programa execute o Winmain primeiro (eu tenho um motivo para usar os dois). Estou executando o Windows 7 com o Mingw, se isso ajudar qualquer coisa.

Foi útil?

Solução 3

Acabei de encontrar esse trabalho e meio que se sentir burro.

#define main USER_Main

Isso então tira o principal da linha por ser o ponto de entrada dos programas, enquanto ainda esconde o fato de que tudo foi bagunçado do usuário.

Outras dicas

Você precisa colocar -mwindows na linha de comando quando você liga para Mingw. Verificar isto como uma introdução suave à programação do Windows com o Mingw.

Além disso: você não pode ter dois pontos de entrada em um executável; portanto, provavelmente não pode fazer o que deseja fazer.

O compilador escolherá um ponto de entrada ou outro com base em se você está direcionando a saída compilada para o subsistema do Windows ou o subsistema do console. WinMain Para o primeiro, main para o último.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top