GeekFZ 发表于 2018-1-25 19:53:23

Windows(SDK)代码在vs2015运行报错LNK1120 一个无法解析的外部命令

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                  PSTR szCmdLine, int iCmdShow)
{
   static TCHAR szAppName[] = TEXT ("HelloWin") ;
   HWND         hwnd ;
   MSG          msg ;
   WNDCLASS   wndclass ;

   wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
   wndclass.lpfnWndProc   = WndProc ;
   wndclass.cbClsExtra    = 0 ;
   wndclass.cbWndExtra    = 0 ;
   wndclass.hInstance   = hInstance ;
   wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
   wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
   wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
   wndclass.lpszMenuName= NULL ;
   wndclass.lpszClassName = szAppName ;

   if (!RegisterClass (&wndclass))
   {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
   }
   
   hwnd = CreateWindow (szAppName,                  // window class name
                        TEXT ("The Hello Program"), // window caption
                        WS_OVERLAPPEDWINDOW,      // window style
                        CW_USEDEFAULT,            // initial x position
                        CW_USEDEFAULT,            // initial y position
                        CW_USEDEFAULT,            // initial x size
                        CW_USEDEFAULT,            // initial y size
                        NULL,                     // parent window handle
                        NULL,                     // window menu handle
                        hInstance,                  // program instance handle
                        NULL) ;                     // creation parameters
   
   ShowWindow (hwnd, iCmdShow) ;
   UpdateWindow (hwnd) ;
   
   while (GetMessage (&msg, NULL, 0, 0))
   {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
   }
   return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   HDC         hdc ;
   PAINTSTRUCT ps ;
   RECT      rect ;
   
   switch (message)
   {
   case WM_CREATE:
          PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
          return 0 ;
         
   case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;
         
          GetClientRect (hwnd, &rect) ;
         
          DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
                  DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
         
          EndPaint (hwnd, &ps) ;
          return 0 ;
         
   case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
   }
   return DefWindowProc (hwnd, message, wParam, lParam) ;
}

aa134523 发表于 2018-2-19 11:21:16

WndProc 函数中调用了PlaySound 函数,该函数依赖winmm.dll,你需要在项目设置中手动链接该函数库,或者使用#pragma comment()链接。

解决方法:
第二行添加
#include <MMSystem.h>
#pragma comment(lib, "winmm.lib")
页: [1]
查看完整版本: Windows(SDK)代码在vs2015运行报错LNK1120 一个无法解析的外部命令