因此,看起来如何使用MASM已经改变了大约50倍,多年来,因为我发现了大量的答案,但其中没有一个有效。
我想知道的是,您是如何在MASM上调用类似exitprocess的?我包括哪些文件?它们在哪里?我正在使用内置到ml.exe社区版中的VS2015。我的根驱动器或VS上都没有MASM文件夹。VS没有附带任何.inc文件(我对驱动器进行了详尽的搜索)。我只想做些简单的事情:
.386
.model flat, stdcall
option casemap:none
includelib ?????????????
include ?????????????
.data
.code
start:
invoke ExitProcess,0
end start我试过只包括msvcrt.lib,但这也不起作用。
发布于 2017-01-28 21:57:22
希望有人有一个更好的答案,但我修正了通过安装MASM从这个网站。它将masm32文件夹放置在根目录中(对于大多数人来说,C:\)
http://www.masm32.com/download.htm
编辑:而且,.inc文件只是一堆函数原型。因此,您可以简单地原型任何您想要的功能,然后使用includelib调用它。
http://win32assembly.programminghorizon.com/tut2.html
在上面的示例中,我们调用了kernel32.dll导出的函数,因此需要包含kernel32.dll中的函数原型。该文件为kernel32.inc。如果使用文本编辑器打开它,您将看到它充满了内核32.dll的函数原型。如果不包括kernel32.inc,仍然可以调用ExitProcess,但只能使用简单的调用语法。您将无法调用该函数。这里的要点是:为了调用一个函数,您必须将它的函数原型放在源代码的某个地方。在上面的示例中,如果不包括kernel32.inc,那么可以在invoke命令的源代码中的任何位置为ExitProcess定义函数原型,它将工作。include文件是为了节省您自己键入原型的工作,所以您可以随时使用它们。
.386
.model flat, stdcall
option casemap:none
include C:\masm32\include\windows.inc
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\kernel32.lib
.data
.code
start:
invoke ExitProcess,0
end start但我也可以很容易地删除这些内容:
.386
.model flat, stdcall
option casemap:none
includelib C:\masm32\lib\kernel32.lib
.data
.code
start:
ExitProcess PROTO STDCALL :DWORD
invoke ExitProcess,0
end starthttps://stackoverflow.com/questions/41915222
复制相似问题