请教编译时找不到“windows.h”是什么原因

forfor11 2005-02-28 11:10:58
我是初学者,刚编了个简单的程序,编译时出错,请前辈们帮我看一下:
源程序:

#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";]
char lpszTitle[]="My_Windows";


wndclass.style=0;
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=lpszClassName;

if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;

}


hwnd=CreateWindow(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
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)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return(0);
}

编译出错信息为:
-------------------Configuration: exec - Win32 Debug--------------------
Compiling...
e1.cpp
e:\study\vc练习\exec\e1.cpp(1) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
Error executing cl.exe.

exec.exe - 1 error(s), 0 warning(s)

请大家指点,多谢!
...全文
4327 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tudou614 2005-03-03
  • 打赏
  • 举报
回复
LNK2001出错的根本原因是:运行时启动的时候除了加载一些关于:堆分配信息及报错。。。。
等信息外,还要启动VC RUNTIME LIBRARY来启动使用VC编译的工程(通常不支持浮点运算),可能如果
你的工程中有浮点运算的时候也要使用上面的“屏蔽main()”函数的命令行参数,虽然这里你没有使用相关的浮点运算,看过了N多的关于LNK2001报错处理的解释,都无法解决的时候可以试试上面的办法,MS平台默认的情况下是要先启动main()函数的,然后启动WINMAIN()函数

上面的说法,只是个人猜测!!有不同意见的说。。。
tudou614 2005-03-03
  • 打赏
  • 举报
回复
上面的#pragma comment (linker, "/ENTRY:WinMainCRTStartup")

指定LINKER在链接的时候忽略掉main()这个哑元函数,直接使用WINMAIN()函数
tudou614 2005-03-03
  • 打赏
  • 举报
回复
帮你调试这个程序费了我N大的劲,楼主想按照你的意思来,这里有了
#include<windows.h>
#pragma comment (linker, "/ENTRY:WinMainCRTStartup")

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int nCmdShow)
{


static TCHAR szClassName[]=TEXT("test2");
static TCHAR szTitleName[]=TEXT("我的窗口");

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= szClassName;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szClassName, MB_ICONERROR) ;
return 0 ;
}


hwnd=CreateWindow(
szClassName,
szTitleName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);

ShowWindow(hwnd,nCmdShow);
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;
LPSTR pClsID;

switch(message)
{
case WM_CREATE:

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

FlashWindow(hwnd, TRUE); // invert the title bar
Sleep(500); // wait a bit
FlashWindow(hwnd, TRUE); // invert again

// Play the system exclamation sound.
UNREFERENCED_PARAMETER(pClsID);

MessageBeep(MB_ICONEXCLAMATION);

EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage(0);

return 0;
}

return DefWindowProc(hwnd,message,wParam,lParam);

}

sankt 2005-03-03
  • 打赏
  • 举报
回复
友情up
clovexmu 2005-03-03
  • 打赏
  • 举报
回复
VC6带SP6_GDIPLUS_DX9绿色自解压安装版:这个vc是自解压安装版,肯定没有像通常安装版一样把路径设置写入系统的路径参数中。
同意 chen18s(印度神棍) 。
smallcrocodile 2005-03-03
  • 打赏
  • 举报
回复
你VC安装目录下有么,如果没有复制过去就是
xiangding 2005-03-02
  • 打赏
  • 举报
回复
重装VC试试
tudou614 2005-03-02
  • 打赏
  • 举报
回复
窗口还没有响应消息:WM_PAINT
就是窗口还没有画出来,怎么去销毁??

看〈windows程序设计〉
chengyumao 2005-03-02
  • 打赏
  • 举报
回复
楼上的不对吧....看楼主的回贴应该是
E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\Include
E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\MFC\Include
E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\ATL\Include

chen18s 2005-03-02
  • 打赏
  • 举报
回复
菜单 tools ->options ->directories ->show directories for "include files"
然后看有没这几个,没有就加进去:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
gison 2005-03-02
  • 打赏
  • 举报
回复
该成#include "windows.h"试试。要不然重装
chengyumao 2005-03-02
  • 打赏
  • 举报
回复
简单点,还是重装VC吧.......路径全坏了........
要不然自己在VC里设include文件的路径.
forfor11 2005-03-02
  • 打赏
  • 举报
回复
to mintwlf:
我搜了下,找到了windows.h 文件,然后将程序改成如下:

#include <E:\downloads\VC6带SP6_GDIPLUS_DX9绿色自解压安装版@yourfeng\VC98\Include\windows.h>

其中的路径为windows.h 的安装路径。但编译后还是提示:
-------------------Configuration: e1 - Win32 Debug--------------------
Compiling...
e1.cpp
e:\downloads\vc6带sp6_gdiplus_dx9绿色自解压安装版@yourfeng\vc98\include\windows.h(159) : fatal error C1083: Cannot open include file: 'excpt.h': No such file or directory
Error executing cl.exe.

e1.exe - 1 error(s), 0 warning(s)
billy145533 2005-03-02
  • 打赏
  • 举报
回复
找个好一点的盘
forfor11 2005-03-02
  • 打赏
  • 举报
回复
谢谢这么多人热心的回复。我现在重装了一遍VC,重新编译该程序时,提示找不到mspdb60.dll,程序无法启动。我在VC的安装目录里搜mspdb60.dll没有搜到。大家说我该怎么办啊
mintwlf 2005-03-01
  • 打赏
  • 举报
回复
在你机子VC安装目录下搜索一下windows.h,然后写全路径试试。如果没有找到windows.h就重新安装VC吧,安装时丢了。
forfor11 2005-03-01
  • 打赏
  • 举报
回复
为什么找不到啊?:(该怎么解决呢
hiiiiiijiang 2005-02-28
  • 打赏
  • 举报
回复
写的很清楚啊,找不到windows.h文件

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧