PW系列 | 用windres 编译.rc 资源文件

本文介绍如何在mingw-w64与Eclipse CDT环境下使用资源文件(.rc)及WindRes工具进行编译,包括资源文件的创建、编译过程中需要注意的问题以及常见错误的解决方法。

版权

本文为原创, 遵循 CC 4.0 BY-SA 版权协议, 转载需注明出处: https://blog.youkuaiyun.com/big_cheng/article/details/127183433.

Original

最近在学习Charles Petzold 的《Programming Windows》第五版. 第10 章"Menus and Other Resources" 开始用到资源文件(用来定义界面布局元素, 图标, 国际化字符串等). 但书中是Visual Studio, 而本地是mingw-w64 + Eclipse CDT. 经摸索可以如下使用资源文件(用10-1 ICONDEMO 程序做试验).

test.rc 资源文件

在ICONDEMO.C 同一目录放置编辑好的ICONDEMO.ICO 图标文件; 再创建一个test.rc 资源文件:

desk1 ICON "ICONDEMO.ICO"

在C 中用字符串"desk1" 引用该资源:

......
wndclass.hIcon = LoadIcon(hInstance, TEXT("desk1"));
......
hIcon = LoadIcon(hInstance, TEXT("desk1"));

编译资源文件

在该目录:

C:\Users\ASUS\eclipse-workspace\HelloWorld>where windres
C:\msys64\mingw64\bin\windres.exe
C:\Users\ASUS\eclipse-workspace\HelloWorld>windres -i test.rc -o test.o -v --use-temp-file

生成test.o 文件.

注意: 一定要使用"--use-temp-file" 选项, 否则(默认用popen/管道) 总是会报错:

C:\Users\ASUS\eclipse-workspace\HelloWorld>windres -i test.rc -o test.o
windres: test.rc:2: syntax error
test.rc:1: fatal error: when writing output to : Invalid argument
    1 | desk1 ICON "ICONDEMO.ICO"
      |
compilation terminated.
windres: preprocessing failed.

编译程序

进入"Debug" 子目录编译:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -o ICONDEMO.o "..\\ICONDEMO.C"

g++ -mwindows -o HelloWorld.exe ICONDEMO.o "..\\test.o"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值