资源文件通过编译,与程序结合在一起。
嗯,你这个问题很普遍的。我谈谈个人的体会啊:1、VC所使用的资源编译器和MASM32中的编译器是一样的,实际上, Win32平台上的资源编译器都是rc.exe,目前版本都稳定在6.0左右。并且RC.exe这个东西只适用于本机代码资源编译,在.net架构下是看不到其身影了。不过了解一下资源编译,或直接使用rc.exe有助于更深层次理解windows内核的一些方面。
2、为什么VC编辑好的RC文件无法用MASM32里面的RC.EXE编译成功呢?这是因为VC生成的.rc资源脚本包含了其本身特有的一些头文件。当在vc环境下编译.rc时,编译器能够找到这些头文件,但当你自己使用rc.exe编译时,由于只指定了一个.rc文件,编译自然出错。
有三种解决办法:
a、还是用vc做资源文件。直接在VC环境中将*.rc编译为*.res(这个几乎是自动生成的),汇编的时候直接"link /subsystem:windows *.obj *.res"就行了。这样使资源的编译变得简单,可以做出好看的界面。
当然,如果你不嫌累,可以用vc编辑好,然后把.rc文件中的头文件清理一下,再自己手工用rc.exe进行编译也是可以的。
b、采用其它所见即所得工具编辑资源,比如:Resource Workshop
c、推荐的方法:对于win32汇编,很多人都采用nmake来维护代码,在makefile文件中使用ml.exe, rc.exe,link.exe等工具来自动生成程序。asm源代码则在ue等工具中编辑。这种方法是很不错的,那么masm32所起的最大作用就是提供了一个include头文件集和一个lib导入库,而这是win32汇编最宝贵的原材料。要使这个编程环境能够正常运作,需要设置一些环境变量,例如以下的脚本:
@echo off
set include=F:\masm32\include%include%
set lib=F:\masm32\lib%lib%
set path=F:\masm32\bin%path%
cd /d H:\SoftwareProgram\ASM
echo on
在上面的脚本中,
include指示ml.exe,rc.exe编译器在遇到include指令时的搜索路径。比如汇编资源编译时,一般都要include <resource.h>,这里的resource.h中含有许多windows内置资源所使用的宏定义。
lib指示ml.exe处理includelib时的搜索路径以及link.exe在链接dll库时用到的导入库路径。
path指向masm32的bin目录,这样可以直接在命令行输入相关命令
最后一行cd /d ...则是将当前目录变换到自己汇编工作的工作目录。
另外为了使用nmake工具,可以将nmake.exe和vc的安装目录拷贝到masm32\bin下,当然这不是必须的,因为vc在安装时已自动为其安装目录设置了path环境。
分类: 电脑/网络 >>程序设计 >>其他编程语言解析:
你说的是资源文件,一种开发工具一个样,VC新建一个工程自动就建成了一个与工程名相同的.res
VB得加载一个资源编辑器之类的外接程序,然后就可以创建和修改资源文件了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)