Heykr 2022-01-12 23:08 采纳率: 80%
浏览 92
已结题

VSCODE编译C语言窗口程序出错

下面的代码在devcpp里面就可以顺利编译

/* BY beyondcode */

#include <windows.h>
#include <winbase.h>
#include <tchar.h>
#include <windef.h>
#include <stdio.h>

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

int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd )

{

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,TEXT("T~i~t~l~e~"), WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);  

 
ShowWindow (hwnd, nShowCmd) ; 
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: 
 return 0 ; 
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ; 
 
 GetClientRect (hwnd, &rect) ; 
 
 DrawText (hdc, TEXT ("1"), -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) ; 

return 0;

}

但是在vscode里编译的时候就会出现以下错误信息:

C:\Users\lenovo\AppData\Local\Temp\ccLaMwRd.o: In function `WinMain': 
c:/Users/lenovo/Desktop/SDK/VisualStudio/case1.cpp:27: undefined reference to `__imp_GetStockObject'
collect2.exe: error: ld returned 1 exit status
终端进程“C:\windows\System32\cmd.exe /d /c g++ -g c:\Users\lenovo\Desktop\SDK\VisualStudio\case1.cpp -o case1.exe”已终止,退出代码: 1
  • 写回答

1条回答 默认 最新

  • 五一编程 2022-01-12 23:31
    关注

    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

    中的GetStockObject 未定义,看是不是缺失头文件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月14日
  • 已采纳回答 1月13日
  • 创建了问题 1月12日

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)