用Nim语言开发windows GUI图形界面程序
前言
本文得到了“樂師”的大力支持,
我们一起调试程序到深夜,要是没有他的帮忙,
我不知道要多久才能迈过这道坎,
另外“归心”还有其他人也提供了帮助,
他们都来自于QQ群:“Nim开发集中营”469329878;
感兴趣的朋友,可以加这个群一起讨论
配置GUI开发环境
我在这篇博客中,写到了Nim开发环境的搭建
那篇博客中说MingW是必选的,
这对于开发一个普通的Nim程序来说,没有问题,但要开发GUI程序,还不够
官方安装包中所包含的的MingW安装包有点问题
如果你用编译命令:--app:gui,编译你的程序,将会出错
如果你不用这个编译命令,那么在你执行你的程序时,会先打开一个命令行窗口,再打开你的GUI程序。
具体为什么会出错,我还不是很清楚
(有可能那个MingW的安装包是64位的,也有可能那个安装包是阉割版的)
所以我们要自己安装一个MingW,
Nim官方网站推荐到MingW官网去下载64位的安装包,
MingW官网,要求你先装一个安装工具,再通过安装工具下载你需要的MingW程序
(说实在的,那个安装工具会搞的你很乱)
我是用“乐师”推荐给我的TDM安装工具安装MingW的
要注意的是,一定要安装32位的MinGW
我现在也不是很清楚为什么64位的MingGW为什么不行
安装好之后需要配置一下环境变量,把如下路径配置到环境变量中:
C:\TDM-GCC-32\bin
(当然你如果装到别的路径下去了,那就另当别论)
然后你应该把Nim的bin路径也配置到环境变量中:
C:\Nim\bin
这样你就可以使用命令行来编译你的程序了
(你用aporia官方提供的IDE来编译你的程序,默认是没有设置--app:gui开关的)
开发GUI程序
好下面我们写个程序
1 2 3 4 5 6 7 8 9 | # test a Windows GUI application import windows #proc MessageBox(hWnd: int, lpText, lpCaption: CString, uType: uint): int # {stdcall, import: "MessageBox", header: "<windows.h>"} discard MessageBox( 0 , "中文试试" , "Nimrod GUI Application" , 0 ) |
在这个程序中我们使用了windows模块
你可以在这里看到windows模块提供的API:http://nim-lang.org/docs/windows.html
编译并执行程序
然后通过下面的命令行,来编译这个程序:
1 | nim c - - app:gui - d:release wingui.nim |
注:
nim是编译器
c是compile的缩写
-app:gui是编译成gui程序的开关
-d:release是release编译开关
wingui.nim是程序源文件
这行命令必须在程序源文件所在目录下执行
命令执行完成后,在同目录下会生成可执行文件
运行这个程序,你会发现中文乱码:
这是你只要把源码文件改成ANSI或者gb2312编码,重新保存
然后再编译一次,就好了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2009-08-09 PL/SQL学习笔记-游标
2009-08-09 PL/SQL学习笔记-程序包