我使用masm32 9.0 的qeditor编写了下面小程序:
.model small
.stack 200h
.data
strMsg db 'hello world!',13,10,'$'
.code
start:
mov ax, @data
mov ds, ax
mov dx, offset strMsg
mov ah, 09H
int 21h
mov ah, 4ch
int 21h
end start
点击 Projects-->Assemble ASM file 报错:
error A2006: undefined symbol : DGROUP
解决:
masm编译器ml.exe有两个选项
/coff 和 /omf
dos程序 要指定参数 /omf
win32程序 要指定 /coff
masm 9.0 默认的参数是/coff。
连接时使用命令 link hello.obj。又报错,
LINK:error:Segment reference in fixup record
fatal error LINK1123:
真不容易!
解决:原来linker有两个版本。在bin目录下有两个文件:
link.exe: Ms Incremental Linker, 连接Dos程序;
link16.exe: Ms Segmented Executable Linker, 连接win32程序。
masm32 9.0 编译连接问题解决
在使用masm32 9.0的qeditor编写了一个简单的dos程序后,遇到编译错误A2006:undefined symbol : DGROUP。解决方法是为dos程序指定编译器选项/omf。然而,之后在连接阶段使用link hello.obj时,又出现了Segment reference in fixup record和LINK1123错误。通过发现linker有两个版本(link.exe用于Dos程序,link16.exe用于win32程序),更换正确的linker解决了问题。
4万+

被折叠的 条评论
为什么被折叠?



