请问在 Dev C++ 里编写的 Windows 程序,为啥原先可以编译的,但修改了之后再改回来就不能编译了呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问在 Dev C++ 里编写的 Windows 程序,为啥原先可以编译的,但修改了之后再改回来就不能编译了呢?相关的知识,希望对你有一定的参考价值。

会自动进入到 Makefile.win,指向 $(CC) $(LINKOBJ) -o $(BIN) $(LIBS)

这是我学习的第一个Windows程序:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(message)

case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText
(
hdc,
TEXT("这是我的第一个 Windows 程序!"),
-1,
&rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER
);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default :
return DefWindowProc(hwnd, message, wParam, lParam);



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR LPCmdLine, int nCmdShow)

HWND hwnd;
MSG msg;
WNDCLASS wc;
TCHAR lpszClassName[] = "window";
TCHAR lpszWndName[] = "窗口";

wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wc.lpszClassName = lpszClassName;

if(!RegisterClass(&wc))

MessageBox(NULL, TEXT("窗口注册失败"), TEXT("提示"), MB_OK);
return 0;


hwnd = CreateWindow
(
lpszClassName,
lpszWndName,
WS_TILEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
500,
300,
NULL,
NULL,
hInstance,
NULL
);

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&msg, NULL, 0, 0))

TranslateMessage(&msg);
DispatchMessage(&msg);


return msg.wParam;


如果我注释掉
wc.lpszClassName = lpszClassName;
再改回来就不行了,编译不过去了;

说明白点,就是你自己编译并运行后那个运行框没关闭,就又再编译。一些编译器不能打开多个运行框,如:Dev 参考技术A 为什么要注释掉这行,所有的窗口类都需要类名称的啊追问

我知道肯定要这一行。
但我想搞清楚:
我注释掉它,那它肯定编译不了;
然后我再改回来。为什么它就一直编译不过去了;

当我重新建立一个项目时,把这代码粘贴上去,又没问题。
我想搞清楚是不是设置的问题还是其它问题;

追答

编译的时候提示什么错误?

追问

cannot open output file window.exe: Permission denied
[Error] ld returned 1 exit status
刚试了试,改多几次之后就过不了了,有时头一两次还能过;

追答

那这个和代码没有关系,只是因为你的程序已经被启动了没关闭吧。。。

追问

可是这是WINDOWS程序,没有可供关闭的窗口啊,难道要重新进入DEV C++
因为当我注释掉那一行的时候,它能编译但不能运行(应该叫运行没看到任何东西);所以没有窗口可供关闭;

追答

。。。你试试看去任务管理找,看有没有相关的进程然后关掉
或者在 WinMain 的 return 之前用 ExitProcess() 强制把当前进程关掉
也就是说,没有窗口可以关闭,但是程序依然在运行,所以才让你去任务管理器,把由错误的代码生成的错误的程序给关掉
GetMessage 函数在出现错误的时候会返回 -1,而不是返回 0;而你这 while 的写法就导致了即便返回 -1 还不能跳出循环,自然你的程序就持续在运行了

本回答被提问者采纳
参考技术B 编译提示什么错误麻烦吧问题描述清楚。追问

cannot open output file window.exe: Permission denied
[Error] ld returned 1 exit status
刚试了试,改多几次之后就过不了了,有时头一两次还能过;

追答

任务管理器吧你程序的进程结束掉,你代码没问题,只是你程序在运行无法重新生成。

Dev - C++ 安装(mac/windows)

目录

Windows 系统下载

Mac 系统安装

Devc++使用教程


使用方法在入门教程里面看

c++

在写其他的编程语言的时候我们通常会用到一些软件来帮助我们编写程序和编译,c++也是一样的,在这里我推荐一个软件叫DevC++ (DevCPP)这个软件可以帮助到我们编写c++ 和 编译

简介:Dev-C++(或者叫做 Dev-Cpp)是 Windows 环境下的一个轻量级 C/C++ 集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。它集合了功能强大的源码编辑器、MingW64/TDM-GCC 编译器GDB 调试器和 AStyle 格式整理器等众多自由软件,适合于在教学中供 C/C++语言初学者使用,也适合于非商业级普通开发者使用。

(这里来自百度百科 有兴趣的小伙伴可以去看一下 : Dev-C++_百度百科)  

Windows 系统下载

Windows 要比Mac简单很多,因为Dev不支持Mac系统。

Dev 官网 : https://www.dev-cpp.com/ 好像要开 VPN 才能进去

Dev-C++ download | SourceForge.net 我推荐在这个网站下载,不过这个是国外的网站所以会比较慢。

(不过不用担心)我放了一个安装包在限速盘百度网盘里面

链接: https://pan.baidu.com/s/1GdlCRx9OuWscmsEAcg__Pg 提取码: im7n 

Mac 系统安装

Mac 系统就比较难

主要是Dev - c++ 不支持Mac 系统

所以呢

装个虚拟机吧,我自己都找不到我什么软件是支持在Mac 系统上面编写和编译c++(好像有几个不过比较复杂)的:(

(如果某个大佬有那就发出来吧,谢谢🙏)

我用的是这个:Parallels Desktop, https://www.parallels.cn/

Devc++使用教程

第一步,创建

(Ctrl + N)

文件 --> 新建 -->  源代码 

写的程序是这样的

如果程序有问题它会标出来是哪一行(不会一次性标记全部)

接下来就是编译 & 运行

(其实最主要的几个就在这四个里面了)

第一个是编译(F9),第二个是运行(F10) , 第三个是编译运行(F11, 最主要的), 第四个 全部重新编译运行(F12)我们一般只需要 F11 来运行和编译

dev 是使用的cmd来运行程序的

 运行完上面会显示程序编译的时间和结果

好了就这样

bye 

以上是关于请问在 Dev C++ 里编写的 Windows 程序,为啥原先可以编译的,但修改了之后再改回来就不能编译了呢?的主要内容,如果未能解决你的问题,请参考以下文章

请问如何在windows下把一个文件夹里的所有文件用缩略图的方式显示出来?

如何在 Windows 命令提示符下使用 Dev C++ 编译器编译 C++ 程序?

怎么用c++编写一个Windows服务程序来监控另一个程序,崩溃后重新启动。

C++ 里vector的使用,运行时出错,请问怎么解决??

C语言 请问一下windows下的c++开发,用啥【界面库】比较好?

请问yacc的.y文件是不是识别c++语法写的函数?