eclipse + cdt + mingw 一个Javaer的Win32

这篇博客主要介绍了如何配置Eclipse集成开发环境,结合CDT插件和MinGW在Windows环境下进行C语言开发。首先通过百度搜索并安装MinGW,接着在Eclipse中安装CDT插件。完成安装后,创建C源文件并编写HelloWorld程序,然后解决可能出现的找不到二进制文件错误,通过设置运行配置来确保程序能正确运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c不是我学的第一门编程语言,我入门的语言是汇编(滑稽脸)。那时候,在几百万的高考大军中漂流,总觉得得做点不一样的事情。作为一名从小受科幻影片影响的人,我觉得编程是一件很能用来装高深的事情,于是我去想去学。要学,就从最底层学起,但怎么也得看得懂,所以我选择汇编。但是,说真的,要是我一开始选择了c,或许情况大大不一样,我看了两天汇编,我的自信心深深受到了打击,从此跟编程死磕上了。
c是我学的第二门编程语言。但是,学不深,刚学到使用malloc就没学了,这是一件可惜的事情。其中,一个原因是因为在Ms的影响下,我觉得c是一种不开源的东西;另外一个原因是因为这个时候开始接触了Java,走向了面向对象之路(一直面向,却怎么也找不到)。其实那时候还学了C#的选修,但是不喜欢Ms,所以也有所影响。其实,那仅仅只是一个原因,另外一个原因是因为我用C#写了几个小软件,发给了我的朋友,但在他们机子怎么也跑不起来(作为一个大老粗,我怎么也学不懂静态链接和动态链接)。
写了几个月的程序以后,我觉得这些东西好像都一样,所以我没有继续再区分我该学什么,不该学什么。
最近在无网络环境开发,以前使用的很多是在线工具,没有网络,连个Sql的去空白字符都要打开其他大软件进行格式化。所以打算利用以前学的c知识写个小软件工具(现在学精了,尽量使用标准库),我熟悉的是eclipse(其实我受不了Ms的开发软件那么大,机子渣)所以打算利用eclipse+cdt+mingw进行开发,其中,利用win32的api写了个软件。
(第一次写博客,无关话多多,下面进入正题)

1、安装mingw

当然是强大的某度了,搜索mingw也可以mingw 64或者mingw 32精确一点你的平台。我的是64,找的网址是这个:

https://sourceforge.net/projects/mingw-w64/
(sourceforge是个十分好的网站(从以前玩mc的时候装mod的时候知道的),上面有很多免费的开源软件)

点击打开,一直next(要记得你的安装路径)到这个界面:

勾选你需要的部分(右键Mark for installation),base一定要msys-base、developer-toolkit要,g++可选。

然后,选择菜单栏


==》apply change,就会进行下载了(国内有点慢,失败了就多apply change几次)。
然后就可以了。接下来配置环境路径,跟配Java一样的
计算机右键-》属性-》高级系统设置-》环境变量
在你的用户变量里添加

然后添加Path(如果没有就添加一个),在变量值里添加;%MINGW_HOME%\bin;

点击确定,完成环境变量配置。
接下来,开始-》运行-》cmd

有出来就成功了(库不一定一样)。

2、安装eclipse,当然安装cdt也可以包含在这里面,因为有两种方式:
方式1:直接从官网下载带cdt的eclipse,当然借助强大的某度搜索eclipse cdt了,这个是网址(其实,很多文章的问题是,点进去链接失效了,所以我也没办法保证这个链接一直有效)
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2
方式2:从eclipse的marketPlace下载,菜单帮助(Help)-》Marketplace-》搜索cdt

如果你是eclipse的忠实用户,你也一定会熟悉如何使用它安装插件的。完成后重启eclipse即可。


3、创建工程:


在源文件下面添加源文件,这里添加一个main.c文件:


内容就来个HelloWorld先吧:

#include<stdio.h>
/*
 * main.c
 *
 *  Created on: 2017-6-15
 *      Author: dev2
 */
int main(int argc, char **argv) {
	printf("hello world!");
	getchar();
	return 0;
}
然后先build一下:

然后运行一下:


如果这时候报can't found binaries 错误那么,需要先进行一下运行配置(Run Configurations,c/c++ Application 没有配置就增加一个):


点击serach Project先搜索一下exe,找不到就Browse直接定位到生成的exe(用过TMD-GCC没有生成,可能工程配置有错)

然后就可以直接在工程下新建源文件了,
工程结构:
Binaries:运行的目标二进制文件
Includes:包含的库文件(包括系统库)
Debug:调试时构建生成的文件
*.c:源文件
若新建了source folder,则在引用的时候,应该使用(文件夹)/(头文件的)的引用方式
下面我们写一个win32的HelloWorld,主要源文件main.c:
#include <stdio.h>
#include <windows.h>
int initWindows(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) {
	return initWindows(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}

然后在initWindows中可以进行窗口初始化函数:
/**
 * 初始化窗体。
 */
int initWindows(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) {


	int WIN_WIDTH = 200;
	int WIN_HEIGH = 200;


	int x = (GetSystemMetrics(SM_CXSCREEN) - WIN_WIDTH) / 2;
	int y = (GetSystemMetrics(SM_CYSCREEN) - WIN_HEIGH) / 2;


	WNDCLASS wndclass;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_PEN);


	wndclass.hCursor = LoadCursor(NULL, IDC_HAND);
	wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(3056));//自定义图标,在下文
	wndclass.hInstance = hInstance;
	wndclass.lpfnWndProc = WinProc;
	wndclass.lpszClassName = "clazzName";
	wndclass.lpszMenuName = NULL;
	wndclass.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wndclass);


	HWND hwnd;
	hwnd = CreateWindow("clazzName","截图",WS_OVERLAPPEDWINDOW^WS_THICKFRAME,x,y,WIN_WIDTH,WIN_HEIGH,NULL,NULL,hInstance,NULL);
	ShowWindow(hwnd, SW_NORMAL);
	UpdateWindow(hwnd);
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) {
	TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}
/**
 *
 *消息处理函数。
 */
LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
	
	
	HDC hdcMem;
	int screenx = GetSystemMetrics(SM_CXFULLSCREEN);
	int screeny = GetSystemMetrics(SM_CYFULLSCREEN);
	static char filePath[MAXPNAMELEN];
	switch (uMsg) {
		case WM_CREATE:
	
			break;
		case WM_CLOSE:
			if (IDYES == MessageBox(hwnd, "close window?", "", MB_YESNO))
			DestroyWindow(hwnd);
			break;
		default:
			return DefWindowProc(hwnd, uMsg, wParam, lParam);
		}
	return 0;
}

4、关于自定义程序图标:
作为一名有个性的程序猿,怎么会愿意让生成的程序成为这种什么图标风格都没有的样子:

像一般的软件,至少得从表面让人家看起来愿意去用它,而不是看起来像个不安全的东西。在Ms的开发软件中,一般通过自定义资源的模式定义图标,那么,在mingw下,用的是它自带的windres工具。它用于编译Microsoft Windows资源文件:

使用步骤如下:(1)先下载一个可以用的图标(.ico 不要太大):

(2)创建一个.rc文件,你的文件编辑器可以打开的(我这里叫icon.rc),用文件编辑器打开,然后输入以下内容(每一行第一个是资源的id、第二个是文件格式、第三个是文件所在路径。):
1 ICON "wint.ico"
3056 ICON "wint.ico"
(3)然后,在命令行中使用windres工具进行资源文件的编译(命令格式为:windres  .rc源文件 [-o 输出文件] 如果没有-o选项,编译后的数据将直接显示在命令行窗口中,不会生成.o文件):

(4)windows下的gcc在编译的时候,会查找连接参数的资源文件,如果找不到就会使用系统默认的。接下来,在我们的工程中加入该文件,首先打开工程设置


然后重新build一下:

生成的文件就有图标了:

5、关于黑窗(cmd窗口):
当你使用gcc写了一个win32之后,总有这么一个黒窗,严重影响美观,为了不要这个黑窗,我们需要在链接的时候,加入-mwindows的选项:还是在工程的properties设置里面,加入即可

接下来,就可以进行win32的开发了。好了,这就是这几天使用eclipse进行win32开发的心得。第一次写博客,有错误的请大家多多包含,多多指出,有什么不好的也请给建议哈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值