【发布时间】:2012-09-04 23:29:17
【问题描述】:
我正在我的大学学习汇编,我们得到了一张带有 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
此代码在学校的 PC 上运行良好。在家里,我进入DOS,设置MASM文件夹的路径,然后做Make32文件。
这是我得到的错误:
LINK32 : error LNK2001: unresolved external symbol _mainCRTStartup
test.exe : fatal error LNK1120: 1 unresolved externals
程序编译(我得到 .lst、.obj 和 .pdb 文件),但仅此而已。我在想这是因为我家里有一个 64 位操作系统,但我对如何在 64 位环境中启动和运行它一无所知——CD 或书在 64 位系统上没有任何内容。只有一个 make16 或 make32 .bat 文件。这真的很糟糕,因为这意味着我不能在家做任何工作,除非有工作?
【问题讨论】:
-
程序汇编和链接 NOT 编译。使用 Assembly 时不编译任何内容。你能发布你正在使用的make文件吗?
-
听起来好像没有找到与 libc 等效的“打瞌睡”。执行“set”命令查看环境变量。寻找“LIB”变量。比较你在学校和家里看到的东西。您可能需要安装 C 编译器(在家)才能获得 C 库。缺少的变量在您的“C 启动代码”中 - 调用“_main”的代码。可能只需要设置“LIB”变量...
-
这个问题没有“Make32 文件”是无法回答的。
标签: assembly linker masm irvine32