E语言创建并运行EXE程序的完整指南
1. 新建项目
启动开发环境
启动方式:
- 双击桌面上的"易语言"快捷方式(默认安装会创建)
- 从开始菜单→所有程序→"易语言"文件夹中选择启动
- 直接运行安装目录下的e.exe可执行文件(通常在C:\Program Files\e\e.exe)
开发环境界面详解:
顶部菜单栏:
文件:包含新建、打开、保存等基本操作
- 新建项目(Ctrl+N)
- 打开项目(Ctrl+O)
- 最近文件列表
- 项目属性设置
编辑:代码编辑相关功能(复制、粘贴、查找等)
- 代码格式化(Ctrl+K)
- 书签管理(Ctrl+F2)
视图:控制界面元素的显示/隐藏
- 工具箱
- 属性窗口
- 输出窗口
项目:项目相关的管理功能
- 添加新文件
- 项目编译选项
调试:调试相关功能
- 启动调试(F5)
- 逐语句调试(F8)
工具:各种实用工具
- 资源编辑器
- API查看器
帮助:帮助文档和版本信息
- 易语言手册
- 示例代码
常用工具栏:
- 新建项目按钮(空白文档图标)
- 打开项目按钮(文件夹图标)
- 保存按钮(磁盘图标)
- 剪切/复制/粘贴按钮
- 撤销/重做按钮
- 编译/调试按钮(绿色三角形图标)
创建项目流程
点击"文件"→"新建"菜单项
在弹出的"新建项目"对话框中:
左侧选择项目类型分类:
- Windows程序
- 控制台程序
- 动态链接库
- 其他特殊类型
右侧预览项目模板说明:
- 基本窗口程序(带主窗口)
- 多文档界面程序
- 空白项目
底部可设置:
- 项目名称(如"MyFirstApp")
- 保存位置(建议使用不含中文和空格的路径)
- 解决方案名称
高级项目设置(专业版):
多文档界面(MDI)程序:
- 支持同时打开多个文档窗口
- 包含窗口管理功能(平铺、层叠等)
- 示例:文本编辑器、图像处理软件
ActiveX控件:
- 用于创建可嵌入其他应用程序的组件
- 支持属性、方法和事件
- 示例:自定义图表控件、多媒体播放器
COM组件:
- 创建可被多种语言调用的组件
- 需要注册到系统(regsvr32)
- 示例:数据加密组件、业务逻辑组件
2. 创建Windows窗口程序
项目类型详解
Windows窗口程序:
- 自动生成的代码框架包括:
- 窗口过程函数(处理Windows消息)
- 消息处理机制(消息循环)
- 默认窗口资源(图标、菜单等)
- 内置控件支持:
- 基础控件:按钮、文本框、列表框等20+种标准控件
- 高级控件:树形视图、列表视图、状态栏
- 支持自定义绘制(OnPaint事件)
控制台程序:
- 特点:
- 无图形界面
- 使用标准输入输出(stdin/stdout)
- 运行速度快
- 适用场景:
- 后台服务程序(如Windows服务)
- 批处理脚本增强版
- 命令行工具(如文件处理工具)
动态链接库:
- 创建步骤:
- 选择DLL项目模板
- 定义导出函数(使用"导出"关键字)
- 设置函数调用约定(stdcall/cdecl)
- 指定函数参数和返回值类型
- 调用方式:
- 静态链接(在E语言中声明导入)
- 动态加载(使用LoadLibrary/GetProcAddress)
- 示例:加密算法库、硬件驱动接口
项目初始化细节
自动生成的代码结构:
.版本 2
.支持库 shell32
.程序集 程序集1
.程序集变量 全局变量1, 整数型
.子程序 _启动子程序, 整数型
' 程序入口点
载入 (窗口1, , 真) ' 显示主窗口
返回 (0) ' 返回值给操作系统
.子程序 _窗口1_创建完毕
' 窗口创建时执行的初始化代码
编辑框1.内容 = "欢迎使用易语言"
按钮1.标题 = "确定"
.子程序 _按钮1_被单击
' 按钮点击事件处理
信息框 ("按钮被点击了!", 0, "提示", )
窗口属性设置示例:
修改窗口标题:
窗口1.标题 = "我的第一个程序 - 版本1.0"
调整窗口大小:
窗口1.宽度 = 800 ' 像素单位
窗口1.高度 = 600
窗口1.左边 = (取屏幕宽度 () - 800) / 2 ' 居中显示
窗口1.顶边 = (取屏幕高度 () - 600) / 2
设置窗口样式:
窗口1.边框 = 3 ' 3表示可调整大小的边框
窗口1.最大化按钮 = 真
窗口1.最小化按钮 = 假 ' 禁用最小化按钮
窗口1.总在最前 = 真 ' 窗口置顶
3. 调试程序
高级调试技巧
条件断点:
- 设置方法:
- 在代码行左侧单击添加普通断点(红色圆点)
- 右键断点→"条件"
- 输入条件表达式,如计数器 > 100
- 设置命中次数(如每5次命中才中断)
- 适用场景:
- 循环体内的特定条件调试
- 偶发性错误的捕获
数据断点:
- 适用场景:
- 跟踪全局变量变化(如意外被修改)
- 监测内存泄漏(监视指针变量)
- 检测缓冲区溢出
- 设置步骤:
- 在"调试"→"窗口"→"断点"中新建数据断点
- 输入变量名(如全局变量1)或内存地址
- 设置触发条件(读取/写入时中断)
远程调试:
- 配置步骤:
- 在目标机器安装远程调试组件(e_remote.exe)
- 配置防火墙允许调试端口(默认4020)
- 在开发机器设置远程连接(IP地址和端口)
- 启动调试时选择"附加到远程进程"
- 注意事项:
- 确保两端使用相同版本的易语言
- 调试符号文件需要同步
调试信息查看
变量监视窗口:
- 添加监视表达式:
- 右键变量→"添加监视"
- 手动输入表达式(如数组[索引])
- 查看复杂结构:
- 展开树形节点查看对象属性
- 右键→"十六进制显示"查看原始数据
- 数组可视化工具
内存查看器:
- 查看原始内存数据
- 支持跳转到指定地址
- 支持内存搜索功能
- 显示格式选项:
- 16进制
- ASCII文本
- Unicode文本
- 浮点数格式
寄存器窗口:
- 查看CPU寄存器状态
- EAX/EBX/ECX/EDX等通用寄存器
- EIP指令指针
- EFLAGS状态寄存器
- 适用场景:
- 低级API调试
- 崩溃分析
- 反汇编代码调试
4. 查看运行结果
运行效果验证
界面测试:
- 测试项目:
- 控件布局是否正确(不同DPI下)
- 焦点切换是否流畅(Tab键顺序)
- 多语言显示(长文本是否截断)
- 高对比度模式适配
- 分辨率测试:
- 在800x600、1920x1080等不同分辨率下运行
- 验证高DPI缩放效果(150%、200%)
- 多显示器环境测试
功能测试:
- 正常流程测试:
- 按照用户手册测试主要功能
- 示例:文件打开→编辑→保存流程
- 边界条件测试:
- 超大文件处理
- 空输入测试
- 非法字符输入
- 异常输入处理:
- 快速重复点击按钮
- 网络断开时的重试机制
- 磁盘空间不足提示
性能分析
性能计数器:
- CPU使用率监控:
- 采样间隔设置(100ms-1s)
- 热点函数识别
- 内存占用趋势:
- 工作集大小
- 私有字节数
- 内存泄漏检测
- GDI对象计数:
- 窗口句柄泄漏检测
- GDI资源释放验证
代码分析:
- 函数调用耗时统计:
- 使用取启动时间()和取时间间隔()
- 输出到日志文件
- 热点代码识别:
- 循环优化(减少嵌套层次)
- 频繁调用的函数内联化
- 内存分配分析:
- 跟踪分配内存()调用
- 检测内存碎片
5. 生成最终EXE文件
编译配置选项
基本设置:
- 输出文件名:
- 主程序名称(不含空格和特殊字符)
- 版本号后缀(如_v1.0)
- 目标目录:
- 默认./bin目录
- 支持环境变量(如%TEMP%)
- 图标文件选择:
- 支持.ico格式
- 多尺寸图标(16x16,32x32,48x48)
- 透明度支持
高级选项:
- 代码优化级别:
- 0:不优化(调试版本)
- 1:基本优化(去除调试信息)
- 2:完全优化(内联函数等)
- 压缩选项:
- UPX压缩(可减小30-50%体积)
- 资源压缩(PNG/JPG等)
- 加密选项(防止反编译)
版本信息:
- 文件版本:1.0.0.0(遵循语义化版本)
- 产品名称:显示在"属性→详细信息"
- 公司名称:版权声明
- 版权信息:年份和所有者
- 文件描述:简短功能说明
- 内部名称:用于版本控制
生成安装包
使用"编译"→"制作安装包"
添加文件:
- 主程序EXE
- 依赖的DLL(如数据库驱动)
- 资源文件(图像、音频等)
- 配置文件(INI/XML)
设置安装选项:
- 安装目录(%ProgramFiles%\MyApp)
- 开始菜单项(带卸载快捷方式)
- 桌面快捷方式(可选创建)
- 注册表项(如文件关联)
选择压缩方式:
- 标准压缩(平衡速度和大小)
- 最大压缩(适合网络分发)
- 分卷压缩(用于CD/DVD分发)
6. 最佳实践
项目管理
目录结构:
MyProject/
├── src/ # 源代码
│ ├── main.e # 主程序文件
│ ├── utils/ # 工具类
│ └── forms/ # 窗口文件
├── res/ # 资源文件
│ ├── images/ # 图片资源
│ ├── sounds/ # 音频文件
│ └── lang/ # 多语言文件
├── docs/ # 文档
│ ├── manual.txt # 用户手册
│ └── api.md # API文档
└── build/ # 编译输出
├── debug/ # 调试版本
└── release/ # 发布版本
版本控制:
- 使用Git管理代码:
- .gitignore配置(排除build/等目录)
- 分支策略(master/develop/feature)
- 提交规范:
- 类型(范围): 描述
- 示例:fix(login): 修复空密码崩溃问题
- 版本标签:
- v1.0.0 - 初始发布
- v1.1.0 - 功能更新
代码规范
命名约定:
- 变量:小驼峰,如userName
- 常量:全大写加下划线,如MAX_RETRY_COUNT
- 函数:动词开头,如GetUserName()
- 类/窗口:名词开头,如LoginDialog
- 全局变量:g_前缀,如g_config
注释规范:
文件头注释:
' 文件名: utils.e
' 功能: 提供字符串处理工具函数
' 作者: 张三
' 最后修改: 2023-05-20
函数注释:
' 计算两个数的和
' 参数:
' a - 第一个加数
' b - 第二个加数
' 返回: 两数之和
重要代码注释:
' 注意: 此处的特殊处理是为了兼容旧版本
调试技巧
日志记录:
-
关键操作记录:
写到文件 ("app.log", "[" + 到文本(取现行时间()) + "] 用户登录成功: " + 用户名) -
日志级别控制:
.如果真 (调试模式) 调试输出 ("详细调试信息: ", 变量值) .如果真结束 -
日志回滚:
- 按日期分割日志文件
- 限制单个文件大小(如10MB)
错误处理:
API调用检查:
句柄 = 打开文件(文件名)
.如果 (句柄 = 0)
信息框 ("文件打开失败", 0, "错误", )
返回 假
.否则
' 正常处理
.如果结束
异常处理:
.异常处理
' 可能出错的代码
.异常捕获 错误码, 错误信息
信息框 ("发生错误: " + 错误信息, 0, , )
.异常处理结束
友好提示:
- 避免显示技术性错误信息
- 提供解决方案(如"请检查网络连接")