我试图在Windows上使用汇编进行编程,但这是一个巨大的痛苦,我试图制作一个简单的程序,当它完成时返回一个退出代码,但(与Linux相反)没有关于Windows系统调用代码的文档。
因此,我直接去研究如何做到这一点,但几乎没有关于它的信息,我读到为了制作这个系统调用,我需要包括来自库的函数,比如:kernel 32或User 32,但我不能将它们链接到我的程序中,因为所有这些库都是.dll而不是.lib/.a,链接器显然会向我抛出库不存在的错误,下一个代码是我从视频中一行一行复制的东西(在这个主题中唯一出现的是这个视频):
global _main
extern _MessageBoxA@16
section .text
_main:
push 0
push 0
push hello
push 0
call _MessageBoxA@16
hello:
db "Hello, World", 0
字符串
所有这些都使用NASM汇编程序和Visual Studio生成工具环境中的下一个命令 “vcvars 32”**:“link/entry:main /subsystem:windows main.obj user32.lib”**
这就是我所尝试的,我需要知道如何链接这些库,如何从它们导入函数,如何生成系统调用。所有这些只是为了给一个没有功能的程序生成退出代码(或者在上面的代码的情况下创建一个消息框)。
1条答案
按热度按时间yeotifhr1#
解决方案是下载SDK并从那里获取库。