VC 生成RES 50
我在学WIN32汇编,想用VC的资源编辑器编辑资源文件,但是我用VC编辑好生成RC文件后无法用MASM32里面的RC.EXE编译生成RES,主要是RC里面包含了VC里面的...
我在学WIN32汇编,想用VC的资源编辑器编辑资源文件,但是我用VC编辑好生成RC文件后无法用MASM32里面的RC.EXE编译生成RES,主要是RC里面包含了VC里面的头文件而MASM32里面没有,但我没找到怎么用VC直接编译生成RES,谁能告诉我怎么VC直接生成RES文件以供我汇编WIN32程序用,或者告诉我如何用MASM32的RC编译VC的RC文件也行。不要给我弄些长篇大论的来,希望好心人能说说,详细点初学者很多不懂!有什么经验想法的也可以说说关于这个的!谢谢了!
展开
1个回答
展开全部
嗯,你这个问题很普遍的。我谈谈个人的体会啊:
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环境。
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环境。
参考资料: windows环境下32位汇编语言程序设计(第2版)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询