我有以下代码:
include stdlib.a
includelib stdlib.lib
但是在组装时,它给了我一个错误:“无法打开文件:stdlib.a”
我没有任何名为“stdlib.lib”或“stdlib.a”的文件。
我一直在寻找这些文件,但找不到它们。我能找到的唯一文件是“stdlib.h”(看看 Ramhound 的答案),但 WinAsm 在编译时无法识别它。
有什么方法可以将“stdlib.h”转换为“stdlib.lib”或“stdlib.a”,或者在汇编中使用? (来自 Ramhound 的回答:*“stdlib.h”是标头,而不是库。它无法转换为“stdlib.lib”或“stdlib.a”*)。
谢谢!!!
编辑1 在 Ramhound 的回答中,他解释说 stdlib.h 是一个“标头”,而不是一个库。有人可以帮助我使用 stdlib.lib 和 stdlib.a 吗?
我一直在寻找这些文件,但找不到。我希望获得有关这些库的帮助。 (为什么每个人都有,但我找不到哪里下载?
WinASM 是一个 IDE,而不是汇编器。
include
和includelib
都是MASM。如果您想使用 C 函数,则需要链接 Microsoft 的 C 运行时 - MSVCRT.dll。 MASM32 包含 inc
和导入库:
include msvcrt.inc
includelib msvcrt.lib
MASM32 导入库在函数名称前添加
crt_
,因此 wscanf
将被称为 crt_wscanf
您可以在此处找到这两个标题(以及更多):
stdlib.a
https://github.com/vastopol/Assembly/tree/master/UCR_STDLIB_86/aoa_16bit/stdlib/INCLUDE
stdlib.lib
https://github.com/vastopol/Assembly/tree/master/UCR_STDLIB_86/aoa_16bit/stdlib/LIB
我用两者来组装这个旧的
shell.asm
:
PS C:\masm32> .\bin\ml.exe /c /I "C:\masm32\LIB.A\" /I "C:\masm32\INCLUDES.A\" .\shell.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
Assembling: .\shell.asm
PS C:\masm32>
(我使用完整路径,因为这不是我机器的本机汇编器(
ml64.exe
),所以我避免将它放在我的系统的PATH
上。C:\masm32\bin\ml.exe
,只是为了实验和组装旧程序。 /I "C:\masm32\LIB.A\" /I "C:\masm32\INCLUDES.A\"
,是我在本地计算机上创建的文件夹,用于放置所询问的标头)。