LNK 2001无法解析的外部符号_mainCRTStartup MASM

Rob*_*nto 3 assembly linker masm irvine32

我正在我的大学学习汇编语言,并获得了包含MASM 615的CD,并且正在使用Irvine32包含库。一切都可以在学校计算机上正常运行,但是当我尝试在家用计算机上编译并运行相同的代码时,出现链接错误。

INCLUDE Irvine32.inc

.code
main PROC

mov eax,10000h      ; EAX = 10000h
add eax,40000h      ; EAX = 50000h
sub eax,20000h      ; EAX = 30000h
call DumpRegs

exit
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

该代码在学校的PC上运行良好。在家里,我进入DOS,将路径设置为MASM文件夹,然后执行Make32文件。

这是我得到的错误:

LINK32 : error LNK2001: unresolved external symbol _mainCRTStartup
test.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

该程序进行编译(我得到了.lst,.obj和.pdb文件),仅此而已。我想这是因为我家里有一个64位操作系统,但是我不知道如何在64位环境中启动和运行它-CD或本书在64位系统上没有任何内容。只有一个make16或make32 .bat文件。这真是个无赖,因为这意味着除非有工作要做,否则我不能在家做任何工作?

K.R*_*.R. 8

其他答案使我感到困惑,因此我将添加解决方案。在项目的属性中,转到

配置属性>>链接器>>高级

高级中,顶部应该是入口点。输入main


Pyj*_*ong 5

我认为您可能需要手动指定入口点,因为 Windows 上的默认入口符号不是 _main 而是 _mainCRTStartup 错误消息中的一个。您可以在链接器选项中使用/ENTRY :entry_point (程序集中的某些过程)指定入口点。