下面是我的两个文件的简化版本:
macros.asm:
INCLUDE Irvine32.inc
mSampleMacro MACRO prompt_address
MOV EDX, prompt_address
CALL WriteString
ENDM
END
main.asm:
INCLUDE macros.asm
.data
titleMsg BYTE " TITLE",0
instructions BYTE "Insert instructions.",0
.code
main PROC
PUSH OFFSET titleMsg
PUSH OFFSET instructions
CALL DisplayTitleAndInstructions
Invoke ExitProcess,0
main ENDP
DisplayTitleAndInstructions PROC
PUSH EBP
MOV EBP, ESP
MOV EDX, [EBP + 12] ; title
CALL WriteString
CALL Crlf
CALL Crlf
MOV EDX, [EBP + 8] ; instructions
CALL WriteString
CALL Crlf
CALL Crlf
POP EBP
RET 12
DisplayTitleAndInstructions ENDP
生成时出现错误:
LNK2001 unresolved external symbol _mainCRTStartup Project Z:\project\LINK
LNK1120 1 unresolved externals Project D:\autodelete_noav\Debug\Project.exe
我尝试过:我已将Project属性中的入口点更改为main,但使用_main而不是_mainCRTStartup时出现相同的错误。当我将主过程更改为命名为_main时,仍然出现此错误。我已尝试更改包含路径,包括/排除macros.asm中的END,将链接器的系统类型切换为Windows/Console/Native(都出现类似错误)等。
我不确定是文件本身的问题,还是我在Visual Studio中配置一切的方式的问题。
提前感谢任何愿意提供帮助的人。
1条答案
按热度按时间u3r8eeie1#
感谢Michael Petch,将
macros.asm
重命名为macros.inc
并删除END语句修复了它。