主题:各位前辈帮我看看这是什么意思,有劳了。(急)
forestexplorer
[专家分:0] 发布于 2006-09-19 16:17:00
一个计算机三级的题,源程序prog1.asm已经正确通过汇编生成了prog1.obj,但当LINK prog1.obj io.obj时出现了以下文字:
LINK:error: fatal error LNK1123: failure during conversation to COFF:file invalid or corrupt
Segment reference in fixup record
请高手指点这是什么意思,该怎么解决啊?小弟先行谢过了。
回复列表 (共7个回复)
沙发
lhsxingfu [专家分:0] 发布于 2006-09-23 14:39:00
不懂[em15]
板凳
Fanyucai [专家分:400] 发布于 2006-09-24 22:57:00
请用link prog1+io 试试。
4 楼
liangbch [专家分:1270] 发布于 2006-09-25 20:37:00
汇编器生成的obj格式不正确,如果你用的是masm32,请使用参数/coff,例:
\masm32\bin\ml /c /coff prog1.asm
5 楼
forestexplorer [专家分:0] 发布于 2006-09-26 14:59:00
多谢这位仁兄!那是不是在masm32条件下就不能用masm、link等指令了,只要源程序没有错,用ml指令编译和连接格式就正确了?另外,参数/coff具体是什么意思啊?
6 楼
liangbch [专家分:1270] 发布于 2006-09-30 18:36:00
masm32 是一个汇编工具集,它用的汇编器就是masm,低版本的masm的执行文件可能是masm.exe,高版本的masm程序集中的汇编器执行文件是ml.exe,目前,masm32 7.0,8,0,9,0中用的ml均为6.0以上版本。.obj文件的格式有好多处,32位的链接器需要coff的格式,所以你必须指定参数 /coff,以使生成的目标文件能够被链接成功。如果你使用16位的链器生成dos程序,那么就是不需要这个参数。
顺便说一下,高版本的ml.exe依然可以汇编成16位dos程序, 当然也可以汇编以得到32位的windows程序。
我来回复