cpp файл не компилируется с cl, но прекрасно компилируется внутри Visual Studio

У меня возникла проблема, когда следующий код не может быть скомпилирован с использованием CL (VS CMD).
Вместо компиляции выдает ошибку LN2019.
Компилируя тот же код внутри VS, компилируется без ошибок.

#include <windows.h>

LRESULT CALLBACK
MainWindowCallback( HWND   Window,
UINT   Message,
WPARAM WParam,
LPARAM LParam)
{
LRESULT Result = 0;

switch(Message)
{
case WM_SIZE:
{
OutputDebugStringA("WM_SIZE\n");
} break;

case WM_DESTROY:
{
OutputDebugStringA("WM_DESTROY\n");
} break;

case WM_CLOSE:
{
OutputDebugStringA("WM_CLOSE\n");
} break;

case WM_ACTIVATEAPP:
{
OutputDebugStringA("WM_ACTIVATEAPP\n");
} break;

default:
{
// OutputDebugSTringA("default\n")
Result = DefWindowProc(Window, Message, WParam, LParam);
} break;
}

return(Result);
}

int CALLBACK
WinMain(HINSTANCE Instance,
HINSTANCE PrevInstance,
LPSTR     CommandLine,
int       ShowCode)
{
WNDCLASS WindowClass = {};

WindowClass.style = CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
WindowClass.lpfnWndProc = MainWindowCallback;
WindowClass.hInstance = Instance;
// WindowClass.hIcon;
WindowClass.lpszClassName = "FooWindowClass";

return(0);
}

Я разыскал проблему в строке 36:

Result = DefWindowProc(Window, Message, WParam, LParam);

Когда я комментирую эту строку, файл компилируется просто отлично.
Команда cl, используемая для компиляции, также довольно стандартна:

cl -Zi Foo.cpp

Есть какой-то параметр cl, который я пропустил?

-1

Решение

Вы должны связаться с user32.lib:

cl Foo.cpp user32.lib
0

Другие решения

ошибка Error LN2019 не имеет «основной» (вы, кажется, назвали его WinMain).

Смотрите также: ошибка LNK2019: неразрешенный внешний символ _main, указанный в функции ___tmainCRTStartup

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector