0

在尝试设置 Visual Studio 2019 来编译 .asm 项目时,出现错误。

我创建了一个空的 c++ 项目并添加了一个Main.asm文件。我尝试了 MASM 和 NASM 并得到相同的错误:

LNK1104 cannot open file 'C:\Users\Serge Fonville\source\repos\NASM\x64\Debug\Main.obj'

NASM 和 MASM 都产生相同的错误。提到的.obj文件也不存在于该位置。手动编译时,它可以正常工作。

我按照我能找到的所有指南进行设置,但无济于事。

我在尝试之间删除并重新安装了所有内容。

最初我认为它与 MASM(我首先尝试过)有关,但由于 NASM 给出了相同的错误,所以在我看来它是另外一回事。不幸的是,我不知道是什么。

在编译之前,我验证了适用汇编程序的构建扩展已启用,并且 .asm 文件具有相应的项目类型。

任何帮助是极大的赞赏。

作为参考,我尝试编译的 .asm (NASM):来自https://cs.lmu.edu/~ray/notes/nasmtutorial/

; ----------------------------------------------------------------------------------------
; This is a Win64 console program that writes "Hello" on one line and then exits.  It
; uses puts from the C library.  To assemble and run:
;
;     nasm -fwin64 hello.asm && gcc hello.obj && a
; ----------------------------------------------------------------------------------------

        global  main
        extern  puts
        section .text
main:
        sub     rsp, 28h                        ; Reserve the shadow space
        mov     rcx, message                    ; First argument is address of message
        call    puts                            ; puts(message)
        add     rsp, 28h                        ; Remove shadow space
        ret
message:
        db      'Hello', 0                      ; C strings need a zero byte at the end

MASM 文件:

;Descr  : My First 64-bit MASM program
;ml64 prog.asm /c
;golink /console /entry main prog.obj msvcrt.dll, or
;gcc -m64 prog.obj -o prog.exe (main/ret). This needs 64-bit GCC.
;-----------------------------------
extrn printf:proc
extrn exit:proc

.data
hello db 'Hello 64-bit world!',0ah,0

.code
main proc

        mov     rcx,offset hello
        sub     rsp,20h
        call    printf
        add     rsp,20h

        mov     rcx,0
        call    exit

main endp
end

我进行重建时的输出:

Rebuild started...
1>------ Rebuild All started: Project: NASM, Configuration: Debug x64 ------
1>LINK : fatal error LNK1104: cannot open file 'x64\Debug\Main.obj'
1>Done building project "NASM.vcxproj" -- FAILED.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

当我dir为文件

C:\Users\Serge Fonville>dir /s /b c:\main.obj
c:\VTRoot\HarddiskVolume3\Users\Serge Fonville\source\repos\NASM\NASM\x64\Debug\Main.obj
4

0 回答 0