LCC-Win32的使用!
LCC-Win32的使用! |
LCC-Win32介绍 LCC-Win32原来是一个免费的开放源代码WIN32编译器,包含一个很好用的IDE, 用起来很爽,但是最近源码开始要付费的了(40美圆)。详情请见LCC-Win32官方网站。 它的免费版本可以在国内得到,到云风工作室看一下,你会有所收获。 目录 * 简介 仔细的想一下,其实这个介绍并不是一件简单的事情。首先,如果你要是开门见山 看来我的废话也够多的了,让我们切入正题。 这个指南是单页的,建议你等浏览器下载完毕后保存一份拷贝来离线阅读。 编译器的安装 编译器是用来把你编写的文本翻译成处理器可以执行的格式的程序。连接器用来转 虽然这些听起来好像十分的简单,但是实际上并不是这个样子的。编辑器和链接器 IDE的基本功能是编辑文本,你可以在这个环境里编辑程序的源代码,但是远远不 你可以简单的把Wedit想象成你的控制台,在这里你可以控制所有的流程。 写个小程序! 第一步是创建源码文件。在“File”菜单中选择“new”项,然后在出现的对话框 现在你看到的是一个标题为“hello.c”的空白窗口,输入下面的代码: #include <stdio.h> void main (void) 保存我们的小程序,在“File”菜单中选择“Save”项。 如果编译出错了,在信息窗口处双击信息显示所在行,在编辑窗口内将高亮度显示 现在你已经编译好了这个程序,按[Ctrl]+[F5]键运行一下,结果对吗? 使用工程管理 回答是:我也不知道!这可能听起来很傻(的确也是),但是这是看你在编译程序 你肯定不会想要每开发一个程序都要搜索一下硬盘的,这种情况下你就要使用工程。 事实上,对于我们的“HelloWorld”程序还是有一个工程的,Lcc=Win32会为没有 与其他的编译器不同的是,Lcc-Win32的工程信息不是存储在硬盘上的,而是存储 现在你可以试着创建一个“HELLO”工程。 写一个真正的Windows版的“HelloWorld”程序并不比控制台的版本难多少。首先 #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 编译并运行这个程序,你会看到一个显示hello信息的窗口,点ok关闭退出。 如果你是一个C语言的新手,那么先好好的学一段时间再来看这个指南吧! 程序生成向导 但是总还是有些办法可以使事情变得简单一些的。长时间以来,程序员们发现实际 这就是生成向导要完成的工作。你可以在它的帮助下快速的生成应用程序的框架。 让我们看一下使用向导建立最简单的应用程序的处理。 在“Project”菜单下选择“create”项,给出项目名称和路径,选择工程类型为 向导将显示一个对话框叫做:“Application characteristics”,这是向导将在 现在向导将要提示你输入信息设置主窗口的“类”,这里所说的“类”和C++中的 向导的工作就要完成了,接下来的工程创建工作是通常的一些对编译器、链接器、 经过上面的步骤,就完成了向导的所有的工作,你可以在IDE中看到两个窗口,一 正象刚刚所说的那样,这个程序框架是全功能的,可以通过编译并运行,你可以看 现在你可以看一下这个程序的源代码,你会注意到这个程序比那个“Hello World!” 使用WeditRes创建资源 如果Lcc-Win32没有提供一个资源编辑器那么Lcc-Win32将不是一个完整的Win32编 的确,WeditRes还是在不断的完善的过程中,也就是说还没有开发完成。不过它已 如果你正在开发的程序是用向导生成的,那么向导会产生一个资源文件,在这个文 在这里试举一例——我们来为我们上面创建的程序创建一个“关于”对话框资源。 运行WeditRes,输入头文件的路径后选择“Objects”菜单的“New dialog”项, 你在这个时候应该可以看到一个新的对话框和一个浮动的工具条,在对话框中也应 下面我们添加一个静态文本标签,在工具条上选择文本工具,光标形状变成由一个 编辑完成后在“File”菜单中选择存盘,然后关闭WeditRes,为了显示这个对话框 寻找“OnCommand”语句,在那里肯定有一个switch语句的条件之一是菜单命令 case IDM_ABOUT: 我们还需要编写对话框函数。 BOOL CALLBACK AboutDlgProc (HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) 你应该已经明白了,由向导来生成代码要简单得多!现在编译、链接这个程序,然 添加其它类型的资源 事实上WeditRes还不能编辑图标文件,作者说正在做这方面的工作。所以你可能要 在资源创建完后,你要把它添加到工程的资源描述文件里面去。如果你是使用向导 如果你没有使用向导,那么你只能新创建一个RC文件。如果你是使用WeditRes创建 WeditRes一般要建立三个文件:一个*.DLG文件、一个*.H头文件和一个*.RES二进 资源描述文件(*.RC)的文件名一定要和RES文件的文件名相同,当Lcc-Win32的资 #include <windows.h> 息。 第二行包含由WeditRes产生的资源的符号名的头文件,我在这里假定你的资源工程 下面你可以向资源描述文件中增加资源,下面是一个例子: IDI_MYICON ICON myiconfile.ico 这一行定义了图标资源,在使用前,一定要定义图标的符号名。比如在“prjwiz.h” 添加光标或者位图资源的步骤是相同的,只要把关键字改为“BITMAP”或者 下面要做的是把资源描述文件包含在工程文件列表中,当下一次你编译工程,资源 这样你可以添加图标、光标和位图资源,对于其它类型的资源可以使用RCDATA资源 使用非规格资源 你可能认为使用其它的资源编译器如微软在Win32 SDK中提供的资源编译器,或者 但是这里的麻烦事是LCCLINK,因为它并不认识这些资源,因此也不可能把这些资 我认为这样做不是一个好的解决方案,主要的原因是Wedit不是设计成可以使用其 但是这里还是有一个可供选择的方案,——幸运的是LRC支持RCDATA资源类型,这 首先你需要转换你要使用的二进制文件到有一系列的有逗号分割数值表示的文本文 你可以从这里下栽做这些工作的转换器: * Bin2Txt: 开发者:Josef Planeta. 十分的灵活方便; 这两个工具都带有源码,使用Lcc-Win32开发。 然后一定要在资源数据中包含这些整数列表,如果你的资源文件没有使用资源描述 MySound RCDATA 在这个例子中,我们包含了一个叫做“mysound.txt”的文件,这个文件是由一个 要注意当前版本的LRC(V981126)在RCDATA资源的大小上是有限制的,如果任何一 使用RCDATA类型定义资源意味着你不能直接的指定PlaySound来播放这些资源,因 解决办法是手工把这些数据读入内存,下面的代码说明了在PlaySound时要做的事情: BOOL PlayRcSound (HINSTANCE hInst, LPCTSTR lpszSndName) hr = FindResource (hInst, lpszSndName, RT_RCDATA); 如果你的资源在头文件中定义有标识符,叫做:ID_MYSOUND,那么调用函数的方式 PlayRcSound (hInst, MAKEINTRESOURCE(ID_MYSOUND)); 另外,如果你给出了一个字符串名,比如:MySound,函数调用如下所示: PlayRcSound (hInst, "MySound"); 静态库和动态库 和其它的Windows编译器一样,LCC-Win32也支持两种库——动态库和静态库。 静态库包含的代码在编译链接时将被添加在可执行文件中,它被称为“静态”库是 而动态链接库不会由编译器链接到可执行文件中,而是在运行时由操作系统链接的, 静态库的编写要简单些,只要创建一个类型为“Static library (lib)”的新工程, 动态链接库就有些麻烦了,你要使用两个文件而不是一个文件:动态库本身——DLL 而且,动态库的功能可以更加的强大,它有一个LibMain()函数,在程序每一次 要创建一个动态链接库,你要创建一个DLL工程,然后你可以使用向导生成LibMain() 如果要使用动态链接库,象使用静态库一样,要将接口库放在“/lcc/lib”路径下, |
LCC-Win32的使用!相关推荐
- ASPack 2.x (without poly) - Alexey Solodovnikov [Overlay]脱壳
下载地址:http://files.cnblogs.com/tk091/crackme6.7z 先用peid检测,为ASPack 2.x (without poly) -> Alexey Sol ...
- 检测PE文件加壳信息用的特征码
//定义特征码结构体 / typedef struct _Feature { public: LPCTSTR Pos; //相对于入口点的偏移 LPCTSTR Fea; //特征码 LPCTS ...
- 吾爱破解crackme 065-070
065: pe查看LCC win32,即没有加壳 od载入查看,分析关键点如下: 0040134F |. /EB 15 jmp short figugegl.00401366 00401351 |&g ...
- Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
大龙的博客 C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理 Don't Use the Win32 API PostThreadMessage() to Post Me ...
- C#中使用Win32和其他库
C# 用户经常提出两个问题:"我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?"当框架小组构建他们的 .NET 部分 ...
- 在 C# 中通过 P/Invoke 调用Win32 DLL
,.NET Framework 1.0 或 1.1 版类库中存在任何 Windows 所没有的功能限制都不足为怪.毕竟,32 位的 Windows(不管何种版本)是一个成熟的操作系统,为广大客户服务了 ...
- Win32 环境下的堆栈
原文已经找不到,作者应该是:http://blog.csdn.net/slimak 但是没有找到此文,其中丢了2幅图 简介 在Win32环境下利用调试器调试应用程序的时候经常要和堆栈(Stack) ...
- Win32.Lioten.SG病毒
病毒名称:Win32.Lioten.SG 疯狂性:低 破坏性:中 普及度:中 Win32.Lioten.SG病毒描述: Win32.Lioten.SG是一种通过网络共享传播的蠕虫,还会利用Window ...
- win32的一个售票程序,收获有非常的多
先秀一下我的收获吧! 1.在创建非模态对话框的时,需要用到createdialog函数,第二个参数需要注意是填写对话框的资源标识符(id),之后需要调用showwindow来显示对话框:或者不这么做也 ...
最新文章
- C语言求最大公约数3种方法
- RUNOOB python练习题1
- 一道内存分配的面试题
- 关于blog [转贴]来自网络
- 2017.05.01
- 高效访问Internet-启用ISA Server的缓存
- java中类的main方法总结
- python向量运算_Python线性代数学习笔记——向量的基本运算,以及Python代码的实现...
- 为何说张三丰是个优秀的程序员?
- java8 stream中Comparator.comparing排序
- 学计算机编程难吗,编程真的很难吗?为什么会认为学编程难?
- .net开发网站CMS博客框架
- java方法后面throw的作用_Java异常处理中throw与throws的用法区别
- 计算机图形学 opengl版本 第三版------胡事民 第三章更多的绘图工具
- 项目经理需要掌握的硬技能和软技能
- 证券交易买进卖出手续费公式
- 【Docker】(五)使用bind mounts修改Docker容器中的Nginx配置文件
- MTK平台俄罗斯方块游戏评审
- 全国首条5G环线在成都正式开通
- 燃情7月,ACMUG厦门、上海双城技术沙龙及MySQL/MariaDB创始人Monty中国行活动
热门文章
- 2021 IDEA 社区版使用 intellij-spring-assistant 解决方案
- Kmeans 均值类聚算法 (numpy库版)
- 5月5日病毒播报:“小不点”与“游戏窃贼
- android 内存警告_Android持续显示“可能受到监视的网络”警告怎么办?
- 软考下午——数据流图
- LIS项目系统功能菜单培训文档(仅供学习使用)
- 给广大码农分享福利:一个业界良心的github仓库,中文计算机资料
- iconfont 图标转为字体_iconfont 转换为图标字体
- 水厂监控系统、巡检监控、数据分析、生产报表、工艺报表、设备监控、水厂加药、工艺监控、水质分析、电耗、阀门、供水、冲洗、原水、加氯、蓄水、加药、滤池、沉淀池、配水井、氯耗、压力、浊度日、流量日、故障巡检
- ASCII码中blank与space的区别