如何修复MASM x86中出现的未解析外部符号错误?
解决汇编代码的LNK2001/LNK1120链接错误
你的代码里mov和add操作本身没问题,报错是因为链接器找不到ExitProcess@4的实现——这个函数属于Windows系统的kernel32.dll,你只声明了函数原型,但没告诉链接器要链接对应的库文件。
解决方法有两种:
方法1:在代码中添加库引用
在ExitProcess PROTO那一行之后,加上includelib kernel32.lib,让汇编器告知链接器需要链接kernel32库。修改后的代码如下:
.386 .model flat, stdcall .stack 4096 ExitProcess PROTO, dwExitCode:DWORD includelib kernel32.lib ; 添加这一行 .code main PROC mov eax, 5 add eax, 6 INVOKE ExitProcess,0 main ENDP end main
方法2:编译链接时指定库文件
如果用命令行工具(比如MASM的ml.exe和link.exe),在链接步骤加上kernel32.lib参数,示例命令:
ml /c /coff yourfile.asm link yourfile.obj kernel32.lib /subsystem:console
这样链接器就能找到ExitProcess的实现,解决未解析外部符号的问题。
内容的提问来源于stack exchange,提问作者Rediet Workneh
相关产品推荐
相关产品推荐

