У меня возникла проблема, когда следующий код не может быть скомпилирован с использованием 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, который я пропустил?
Вы должны связаться с user32.lib:
cl Foo.cpp user32.lib
ошибка Error LN2019
не имеет «основной» (вы, кажется, назвали его WinMain
).
Смотрите также: ошибка LNK2019: неразрешенный внешний символ _main, указанный в функции ___tmainCRTStartup