Winapi 组装调试/x64生成时,需要Visual Studio确认可能的链接器错误

Winapi 组装调试/x64生成时,需要Visual Studio确认可能的链接器错误,winapi,64-bit,linker-errors,masm,Winapi,64 Bit,Linker Errors,Masm,下面您将看到三个非常简单的汇编代码,一个用于平台x64,一个用于平台x86(Win32),带有包含代码入口点的END指令,第三个具有相同的Win32代码,但在END指令中没有入口点 x64: x86(Win32),入口点位于指令的END: .386 .MODEL flat, stdcall .stack 4096 ExitProcess PROTO STDCALL, dwExitCode: DWORD .CODE main PROC mov eax, -1 invoke Exit

下面您将看到三个非常简单的汇编代码,一个用于平台x64,一个用于平台x86(Win32),带有包含代码入口点的
END
指令,第三个具有相同的Win32代码,但在
END
指令中没有入口点

x64:

x86(Win32),入口点位于指令的
END

.386
.MODEL flat, stdcall
.stack 4096
ExitProcess PROTO STDCALL, dwExitCode: DWORD
.CODE
main PROC
    mov eax, -1
    invoke ExitProcess, 0
main ENDP
END main
.386
.MODEL flat, stdcall
.stack 4096
ExitProcess PROTO STDCALL, dwExitCode: DWORD
.CODE
main PROC
    mov eax, -1
    invoke ExitProcess, 0
main ENDP
END ;main
x86(Win32)在
结束时没有入口点
指令:

.386
.MODEL flat, stdcall
.stack 4096
ExitProcess PROTO STDCALL, dwExitCode: DWORD
.CODE
main PROC
    mov eax, -1
    invoke ExitProcess, 0
main ENDP
END main
.386
.MODEL flat, stdcall
.stack 4096
ExitProcess PROTO STDCALL, dwExitCode: DWORD
.CODE
main PROC
    mov eax, -1
    invoke ExitProcess, 0
main ENDP
END ;main
当我尝试使用以下链接器选项构建这些代码时,我在下表中显示了VS2019生成的错误消息(VS2017生成的错误消息相同):/SUBSYSTEM=Not set和/ENTRY=empty


我对上面突出显示的错误消息有问题。这对我来说没有任何意义,因为它误导了人们,让人以为调试/x64构建时,/SUBSYSTEM选项是控制台,而不是未设置

您无法将链接器选项
/SUBSYSTEM=Not set
传递给链接器,因此我假设您使用的是生成系统。如果要隔离问题,请删除生成系统并在命令行上编译/链接。@IInspectable当然可以。如果您在
属性>链接器>系统>子系统中单击编辑框右侧的向下箭头,则该选项就在那里-您的问题/问题在哪里?不,您不能。您可以使用IDE的UI进行选择,然后将这些选择转换为命令行选项。你似乎被这种转变弄糊涂了,似乎把(你)意想不到的结果归因于链接器。可能不是这样的。如果要隔离您的问题,请将IDE从图片中删除。@IInspectable Ok,但选项
Not set
相当于没有/subsystemm选项的链接器命令行,这是相同的。您不能将链接器选项
/SUBSYSTEM=Not set
传递给链接器,因此我假设您使用的是生成系统。如果要隔离问题,请删除生成系统并在命令行上编译/链接。@IInspectable当然可以。如果您在
属性>链接器>系统>子系统中单击编辑框右侧的向下箭头,则该选项就在那里-您的问题/问题在哪里?不,您不能。您可以使用IDE的UI进行选择,然后将这些选择转换为命令行选项。你似乎被这种转变弄糊涂了,似乎把(你)意想不到的结果归因于链接器。可能不是这样的。如果要隔离问题,请将IDE从图片中删除。@IInspectable Ok,但选项
Not set
相当于没有/subsystemm选项的链接器命令行,这是相同的。