如何下载(或编译)“stdlib.lib”和“stdlib.a”库? (用于组装)

问题描述 投票:0回答:2

我有以下代码:

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.libstdlib.a 吗?

我一直在寻找这些文件,但找不到。我希望获得有关这些库的帮助。 (为什么每个人都有,但我找不到哪里下载?

assembly libraries masm masm32
2个回答
1
投票

WinASM 是一个 IDE,而不是汇编器。

include
includelib
都是MASM。如果您想使用 C 函数,则需要链接 Microsoft 的 C 运行时 - MSVCRT.dll。 MASM32 包含
inc
和导入库:

include msvcrt.inc
includelib msvcrt.lib

MASM32 导入库在函数名称前添加

crt_
,因此
wscanf
将被称为
crt_wscanf


0
投票

您可以在此处找到这两个标题(以及更多):

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\"
,是我在本地计算机上创建的文件夹,用于放置所询问的标头)。

© www.soinside.com 2019 - 2024. All rights reserved.