怎么最简单的都通不过????

jakeding 2002-05-02 04:23:33
我装得是masm32v7,环境设置中我只在autoexec.bat加了SET PATH="%PATH%;c:\masm32\bin\"
然后运行ICZE的例程如下:
.386
.model flat,stdcall
option casemap:none
include c:\masm32\include\windows.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\kernel32.lib
include c:\masm32\include\user32.inc
includelib c:\masm32\lib\user32.lib

.data
MsgBoxCaption db "Iczelion Tutorial No.2",0
MsgBoxText db "Win32 Assembly is Great!",0

.code
start:
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke ExitProcess, NULL
end start

我用ml msgbox.asm /c /coff或者ml msgbox.asm /c(两个的最终结果一样)
编译可以通过,产生msgbox.obj,
然后再:
link /subsystem:windows /libpath:e:\masm32\lib msgbox.obj
此时确出错,错误提示如下:

msgbox.obj:warning LNK4033:converting object format from OMF to COFF(无论/coff加否都有这一行)
msgbox.obj:error LNK2001:unresolverd external symbol _MessageBoxA@16
msgbox.obj:error LNK2001:unresolverd external symbol _MessageBoxA@4
LINK:error LNK2001:unresolved external symbol _WinMainCRTStartup
msgbox.exe:fatal error LNK1120:3 unresolved externals

谁能解释一下这些错误行分别代表什么意思?会是哪里出了问题??
还有那个/coff究竟有什么用??什么时候要加,什么时候不要加????
(我在我的masm32v7上一个win32汇编程序都没通过)
...全文
56 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakeding 2002-05-03
  • 打赏
  • 举报
回复
原来是这样:
我每次都是用:
ml msgbox.asm /c /coff /Cp
无论怎么链接都是出错,
后来发现ml的参数是不能倒过来的应该为:
ml /c /coff /Cp msgbox.asm
然后再链接就对了
jakeding 2002-05-03
  • 打赏
  • 举报
回复
Yeah,通过了,加分!!!
Lastday1 2002-05-03
  • 打赏
  • 举报
回复
既然你已经includelib c:\masm32\lib\kernel32.lib
为什么还要/libpath:e:\masm32\lib
Lesily 2002-05-02
  • 打赏
  • 举报
回复
那位高手给我们详细说说make和makefile的详细使用方法,还有具体说说各个参数的使用。谢谢
Lesily 2002-05-02
  • 打赏
  • 举报
回复
没问题。学习
蚊子王 2002-05-02
  • 打赏
  • 举报
回复
应该没有问题吧
vBin 2002-05-02
  • 打赏
  • 举报
回复
关于COFF的资料,你在一些搜索引擎中查,很多这样的资料的。
yzisyz 2002-05-02
  • 打赏
  • 举报
回复
/coff 参数的意思是产生的 obj 模块采用于32位 Windows NT 兼容的格式

coff=Common Object File Format

当你用汇编编写32位程序时,需要加上这个参数。例如你写的这个例子,再比如当你用 vc 与 汇编 混合编程写32位程序时
vBin 2002-05-02
  • 打赏
  • 举报
回复
没问题的。

ml /c /coff /Cp msgbox。asm (译者注:命令行参数大小写是有区别的)

/c 是告诉MASM只编译不链接。这主要是考虑到在链接前您可能还有其他工作要做。
/coff 告诉MASM产生的目标文件用 coff 格式。MASM 的 coff 格式是COFF(Common Object File Format:通用目标文件格式) 格式的一种变体。在 UNIX 下的 COFF 格式又有不同。
/Cp 告诉 MASM 不要更改用户定义的标识符的大小写。若您用的是 hutch 的包含文件的话,在.model 指令下加入 "option casemap:none" 语句,可达到同样的效果。
fury 2002-05-02
  • 打赏
  • 举报
回复
不会吧,我编译了没错,可以运行.是不是你没有设置
set include=c:\masm32\include
set lib=c:\masm32\lib

/coff generate COFF format object file
具体的我也不懂,呵呵

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧