1
#include <Windows.h>
#include <stdlib.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, PWSTR, int)
{
    return 0;
}

Весь код , но при этом выдает ошибку WinMain: функция не может быть перегружена. Что делать? Сижу на Visual Studio 2017

Kaznachei
  • 603
  • wWinMain и следует убедится что подсистема стоит WINDOWS а не CONSOLE, и что включена поддержка UNICODE – user7860670 Feb 03 '19 at 07:03
  • UNICODE стоит, а как проверить подсистему? – Kaznachei Feb 03 '19 at 07:22
  • Скорее всего и стоит CONSOLE, а как поменять? – Kaznachei Feb 03 '19 at 07:22
  • @VTT Нет, не помогает – Kaznachei Feb 03 '19 at 14:45
  • @Kaznachei что именно? Замена WinMain на wWinMain (или PWSTR на PSTR), по моим тестам, определенно устраняет указанную ошибку. А если бы у вас неверно была установлена подсистема, ошибка была бы другая. – MSDN.WhiteKnight Feb 04 '19 at 04:57
  • @MSDN.WhiteKnight Ничего, я вместо WinMain написал wWinMain . Все заработало, спасибо. А в чем между ними разница ? – Kaznachei Feb 04 '19 at 09:42
  • Точка входа WinMain используется с ANSI-строками (параметры WinMain должны быть типа char), а wWinMain - с широкими символами (WCHAR). У вас тип PWSTR эквивалентен WCHAR*, поэтому нужно использовать wWinMain. Так как у вас в примере параметры никак не используются, разницы на практике не видно. Вообще, подробно о точках входа в VC++ написано здесь: https://ru.stackoverflow.com/questions/867472/точка-входа-в-win32-приложении – MSDN.WhiteKnight Feb 04 '19 at 10:02

1 Answers1

1
WinMain (
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nShowCmd
    ); 

Надо LPSTR вместо PWSTR для WinMain.

0xdb
  • 51,614
Baxter
  • 19
  • 1