能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这是资源源文件
#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
}
|
能力值:
(RANK:410 )
|
-
-
3 楼
找不到resource.h文件,请将resource.h文件的绝对路径输全,如:
#include "x:\MASM32\INCLUDE\resource.h"
RADASM 没有对resource.h文件路径设定环境变量,所以要手动添加。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
试了一下,呵呵,果然.谢谢楼上大侠
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
不需要在代码中加路径。
记事本打开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"项。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
刚才试了一下,把工程选项和masm.ini文件都改了一下,把定义资源文件的路径去掉,编译资源文件还是最开始的那个错误,但只要一改回来,把路径加上,编译就顺利通过 不知道是怎么回事,是不是我RP不好呀...
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
那这样吧,如果你愿意的话,把你的masm.ini文件传给我,我看看,另外,可以的话同时把你这个工程的工程文件(*.rap)也一起传过来。
另请告知你的MASM32安装路径,其中,resource.h文件应当在\MASM32\INCLUDE\下。
=========
当然,我不保证一定能帮的了你
最好今天给,因为未来几天我没时间。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
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
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢大侠.
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
感谢楼上大佬 redasm的这个小bug 修复了
|