首页
论坛
课程
招聘
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝

RadAsm怎么调试资源文件呀

2005-8-22 16:04 8417

RadAsm怎么调试资源文件呀

2005-8-22 16:04
8417
大侠们,俺比较笨,英文也不好
点构建-->编译资源文件
就产生这么一个错误
d:\Masm32\Bin\RC.EXE /v "dlg.rc"
Microsoft (R) Windows (R) Resource Compiler, Version 5.00.1823.1 - Build 1823

Copyright (C) Microsoft Corp. 1985-1998. All rights reserved.

Using codepage 936 as default
Creating dlg.RES

RC: RCPP -CP 936 -f D:\RADASM_2.2.0.1\RadASM\Masm\Projects\dlg\RCa01912 -g D:\RADASM_2.2.0.1\RadASM\Masm\Projects\dlg\RDa01912 -DRC_INVOKED -D_WIN32 -pc\:/ -E -I. -I .
dlg.rc(1) : fatal error RC1015: cannot open include file 'resource.h'.

HWS计划·2020安全精英夏令营来了!我们在华为松山湖欧洲小镇等你

最新回复 (10)
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
酷酷 活跃值 2005-8-22 16:23
2
0
这是资源源文件
#include  <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

#define ICO_MAIN  0x1000 //图标       
#define DLG_MAIN  1

ICO_MAIN  ICON  "Main.ico"

DlG_MAIN DIALOG 50,50,113,64
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框模板"
FONT 9 ,'宋体'
   {
    ICON ICO_MAIN,-1,10,11,18,21
    CTEXT "简单的对话框例子\n 用win32asm编写",-1,36,14,70,19
    DEFPUSHBUTTON "退出(&X)",IDOK,58,46,50,14
   
    CONTROL "",-1,"Static",SS_ETCHEDHORZ|WS_CHILD|WS_VISIBLE,6,39,103,1
    }
雪    币: 1918
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 活跃值 10 2005-8-22 16:58
3
0
找不到resource.h文件,请将resource.h文件的绝对路径输全,如:
#include "x:\MASM32\INCLUDE\resource.h"
RADASM 没有对resource.h文件路径设定环境变量,所以要手动添加。
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
酷酷 活跃值 2005-8-22 17:18
4
0
试了一下,呵呵,果然.谢谢楼上大侠
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
下雪了 活跃值 1 2005-8-22 23:22
5
0
不需要在代码中加路径。
记事本打开RadASM目录下的masm.ini文件,将所有的4,O,$B\RC.EXE /v,1替换成4,O,$B\RC.EXE /v /I"$I",1
对于已建立的工程,在菜单工程-工程选项中,将资源编译项改成4,O,$B\RC.EXE /v /I"$I",1
另:可以将/v选项去掉。
RADASM 不是没有对resource.h文件路径设定环境变量(准确的讲是RadASM自有的内部变量),而是搂住的相关配置少了/I"$I"项。
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
酷酷 活跃值 2005-8-23 09:25
6
0
刚才试了一下,把工程选项和masm.ini文件都改了一下,把定义资源文件的路径去掉,编译资源文件还是最开始的那个错误,但只要一改回来,把路径加上,编译就顺利通过  不知道是怎么回事,是不是我RP不好呀...
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
下雪了 活跃值 1 2005-8-23 14:06
7
0
那这样吧,如果你愿意的话,把你的masm.ini文件传给我,我看看,另外,可以的话同时把你这个工程的工程文件(*.rap)也一起传过来。
另请告知你的MASM32安装路径,其中,resource.h文件应当在\MASM32\INCLUDE\下。
=========
当然,我不保证一定能帮的了你
最好今天给,因为未来几天我没时间。
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
酷酷 活跃值 2005-8-23 14:28
8
0
附件:bag.rar

我的masm32安装在D盘根目录下
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
下雪了 活跃值 1 2005-8-23 17:00
9
0
masm.ini:
=================
[MakeDefNoProject]
1=rsrc.res,O,$B\RC.EXE /v /I"$I",rsrc.rc
或者:
1=$.res,O,$B\RC.EXE /v /I"$I",$.rc
前者要求资源脚本文件名为必须为rsrc.rc
后者文件名可与代码文件名相同,建议用这个
用后者的话,同时应改下面:
3=$.exe,O,$B\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"$L",$.obj,$.res
5=$.obj,O,$B\CVTRES.EXE,$.res
11=$.res,O,$B\RC.EXE /v /I"$I",$.rc
13=$.exe,O,$B\LINK.EXE /SUBSYSTEM:WINDOWS /DEBUG /VERSION:4.0 /LIBPATH:"$L",$.obj,$.res
15=$.obj,O,$B\CVTRES.EXE,$.res
此外,若要用OllgDbg调试源码,建议:
13=$.exe,O,$B\LINK.EXE /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV /LIBPATH:"$L",$.obj,$.res
(即:将链接选项改为/SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV)

RadASM在新建工程时,会让你选择工程类型,如“Win32 App”“Console App”等,在工程建立完毕之后,RadASM会从masm.ini文件中读取对应工程类型的配置信息作为该工程的编译链接选项,如你新建的是“Win32 App”,那么RadASM会从“[Win32 App]”段中读取,读取完毕之后,它会将该段信息复制到新工程的工程文件(*.rap)的“[MakeDef]”中,以后在编译链接时用的是工程文件中的配置。即masm.ini文件只是个模板。
在masm.ini文件中,[MakeDefNoProject]段不属于任何一种工程类型,当你直接在窗口中写代码(即没有用工程)编译链接时用的就是该段,此外,你用RadASM编译外来代码(就是不用RadASM编写的代码,其中不包含RadASM特有的工程文件)时,用的也是[MakeDefNoProject]。

刚才提到用OllgDbg调试源码,只是改了[MakeDefNoProject]段,对于其它的如“[Win32 App]”你就照着改吧。
/I"$I"中的"$I"对应你在路径设置中的Include:,

对于你这个工程,在工程选项中将资源编译项改成4,O,$B\RC.EXE /v /I"$I",1
dbg.rc中应是:
#include  <resource.h>
编译选项中加了/I"$I"就不要再带路径了。

===================================
资源编译 RC.EXE

RC [/选项] 资源脚本文件

/v 显示编译过程中的消息 RadASM默认使用了它,建议去掉(清静多了^_^)
/i 指定INCLUDE文件夹路径 找不到的话就由环境变量INCLUDE决定

常用命令:rc xxx.rc

 

汇编代码 ML.EXE

ML [/选项] [/链接选项] 汇编代码文件列表

/c不自动链接 不自动链接 ML.EXE可直接生成可执行文件,但一般我们使用LINK.EXE进行链接生成
/coff 产生COFF格式的OBJ文件 OBJ文件有多种格式,这里只能使用COFF格式
/Cp 代码区分大小写  
/Fo 文件名 指定OBJ文件名  
/Fe 文件名 指定EXE文件名  
/Gc 采用PASCAL语言函数调用类型  
/Gd 采用C语言函数调用类型  
/Gz 采用StdCall函数调用类型 常用的是StdCall类型,这主要涉及函数调用时的参数传递规范
/I 指定INCLUDE文件夹路径  
/Zi 加入符号调试消息 CodeView格式的调试符,一般没必要加入,尤其是对外发布的文件
/link 选项 指定链接选项 倘若通过ML直接生成可执行文件,在此指定链接选项

常用命令:ml /c /coff xxx.asm

 

链接程序 LINK.EXE

LINK [选项] [文件列表]

/BASE:地址  指定程序装入的基地址 指虚拟地址,默认情况下EXE文件是0x00400000,Dll是0x10000000。一般该项不需要指定
/DEBUG 在可执行文件中加入调试信息  
/DEBUGTYPE:类型 调试信息类型 如:COFF,CV
/DLL 用于链接动态链接库  
/DEF:文件名 链接库文件使用的DEF文件  
/IMPLIB:文件名  链接含输出函数的文件时建立的导入库名
/LIB:编译Lib文件用 
/LIBPATH:路径 指定LIB文件路径即导入库  
/MAP:文件名  生成MAP文件 与调试有关,一般不需要
/OUT:文件名  指定输出文件名 默认扩展名是.EXE
/RELEASE 写入文件CRC校验和 这涉及PE文件格式,在PE中有一校验字段,校验值就保存在此
/SUBSYSTEM:系统 指定程序运行的系统平台 如WINDOWS,CONSOLE,POSIX等

常用命令:link /subsystem:windows xxx.obj xxx.res
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
酷酷 活跃值 2005-8-24 08:53
10
0
谢谢大侠.
雪    币: 630
活跃值: 活跃值 (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_万一 活跃值 2020-7-1 20:38
11
0
感谢楼上大佬  redasm的这个小bug 修复了
游客
登录 | 注册 方可回帖
返回