none
无法解析的标记及外部符号 RRS feed

  • 问题

  • 我按照MSDN中的例程输入代码,debug后提示有若干无法解析的标记和无法解析的外部外部符号,请各位帮忙提示一下,代码如下:

    #include <windows.h>

    // Global variable
     
    HINSTANCE hinst;
     
    // Function prototypes.
     
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
    BOOL InitApplication(HINSTANCE);
    BOOL InitInstance(HINSTANCE, int);
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
     
    // Application entry point.
     
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
        LPSTR lpCmdLine, int nCmdShow)
    {
        MSG msg;
     
        if (!InitApplication(hinstance))
            return FALSE;
     
        if (!InitInstance(hinstance, nCmdShow))
            return FALSE;
     
        BOOL fGotMessage;
        while ((fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0 && fGotMessage != -1)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
            UNREFERENCED_PARAMETER(lpCmdLine);
    }
     
    BOOL InitApplication(HINSTANCE hinstance)
    {
        WNDCLASSEX wcx;
     
        // Fill in the window class structure with parameters
        // that describe the main window.
     
        wcx.cbSize = sizeof(wcx);          // size of structure
        wcx.style = CS_HREDRAW |
            CS_VREDRAW;                    // redraw if size changes
        wcx.lpfnWndProc = MainWndProc;     // points to window procedure
        wcx.cbClsExtra = 0;                // no extra class memory
        wcx.cbWndExtra = 0;                // no extra window memory
        wcx.hInstance = hinstance;         // handle to instance
        wcx.hIcon = LoadIcon(NULL,
            IDI_APPLICATION);              // predefined app. icon
        wcx.hCursor = LoadCursor(NULL,
            IDC_ARROW);                    // predefined arrow
        wcx.hbrBackground = (HBRUSH) GetStockObject(
            WHITE_BRUSH);                  // white background brush
        wcx.lpszMenuName =  TEXT("MainMenu");    // name of menu resource
        wcx.lpszClassName = TEXT("MainWClass");  // name of window class
        //wcx.hIconSm = LoadImage(hinstance, // small class icon
        //    MAKEINTRESOURCE(5),
        //    IMAGE_ICON,
        //    GetSystemMetrics(SM_CXSMICON),
        //    GetSystemMetrics(SM_CYSMICON),
        //    LR_DEFAULTCOLOR);
     
        // Register the window class.
     
        return RegisterClassEx(&wcx);
    }
     
    BOOL InitInstance(HINSTANCE hinstance, int nCmdShow)
    {
        HWND hwnd;
     
        // Save the application-instance handle.
     
        hinst = hinstance;
     
        // Create the main window.
     
        hwnd = CreateWindow(
            TEXT("MainWClass"),        // name of window class
            TEXT("Sample"),            // title-bar string
            WS_OVERLAPPEDWINDOW, // top-level window
            CW_USEDEFAULT,       // default horizontal position
            CW_USEDEFAULT,       // default vertical position
            CW_USEDEFAULT,       // default width
            CW_USEDEFAULT,       // default height
      NULL,                // no owner window
            NULL,                // use class menu
            hinstance,           // handle to application instance
            NULL);               // no window-creation data
     
        if (!hwnd)
            return FALSE;
     
        // Show the window and send a WM_PAINT message to the window
        // procedure.
     
        ShowWindow(hwnd, nCmdShow);
        UpdateWindow(hwnd);
        return TRUE;
     
    }
    2009年4月6日 13:53

答案

  • 无法解析的标记和无法解析的外部符号是linker报告的,Debugger不应该报告这样的问题。
    你需要查找你调用的每一个Windows API的库文件并且把它们加入到工程的linker设置。如果你创建项目时选择了正确的模板,那么这些库应该已经被加入工程。

    MSMVP VC++
    2009年4月6日 19:01
    版主
  • 估计你用的VCExpress版本, 把链接库加进去试试:
    在文件的开头加上#pragma comment(lib, "user32.lib"),
    或者你无意删除了连接库文件(.lib文件)也会出现这个问题


    Hello world
    2009年4月7日 0:23
    版主
  • 相关lib或者使用到的函数实现没有找到。
    2009年4月7日 5:22
    版主

全部回复

  • 无法解析的标记和无法解析的外部符号是linker报告的,Debugger不应该报告这样的问题。
    你需要查找你调用的每一个Windows API的库文件并且把它们加入到工程的linker设置。如果你创建项目时选择了正确的模板,那么这些库应该已经被加入工程。

    MSMVP VC++
    2009年4月6日 19:01
    版主
  • 估计你用的VCExpress版本, 把链接库加进去试试:
    在文件的开头加上#pragma comment(lib, "user32.lib"),
    或者你无意删除了连接库文件(.lib文件)也会出现这个问题


    Hello world
    2009年4月7日 0:23
    版主
  • 相关lib或者使用到的函数实现没有找到。
    2009年4月7日 5:22
    版主