cpp文件没有用cl编译,但在Visual Studio中编译得很好

时间:2016-01-11 15:46:06

标签: c++ visual-studio linker-errors cl

我遇到的问题是无法使用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参数吗?

2 个答案:

答案 0 :(得分:0)

您必须与user32.lib链接:

cl Foo.cpp user32.lib

答案 1 :(得分:-1)

错误Error LN2019没有“主”(您似乎将其命名为WinMain)。

另请参阅:error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup