2015-11-17 6 views
10

Ich suchte und fand ich kann __asm in x64 in Visual Studio nicht verwenden. Stattdessen muss ich eine externe Assembly-Datei verwenden.externe Assembly-Datei in Visual Studio

Wie kann ich eine externe Assemblydatei zu meinem Win32-Konsolenprojekt hinzufügen?

Wie kann man sie kompilieren?

Können Sie Schritt für Schritt erklären.

Antwort

24

Wie ein Mixed-Source-x64-Projekt mit einer x64 Assembly-Datei erstellen:

1) Starten Sie Visual Studio (Community) 2015 und FILE - New - Project wählen.

Screenshot

2) Im nächsten Fenster Win 32 Console Application wählen.

Screenshot

3) Sie erhalten eine Bestätigung. Klicken Sie auf Next >.

Screenshot

4) Im nächsten Fenster können Sie die Standardeinstellungen übernehmen. Klicken Sie auf Finish.

Screenshot

5) Jetzt PROJECT - Build Customizations... wählen.

Screenshot

6) Im nächsten Fenster tick masm(.targets,.props) und klicken Sie auf OK. Wählen Sie

Screenshot

7) Build - Configuration Manager...

Screenshot

8) die Active solution platform ändern

Screenshot

9) auf x64 erstellen callee.asm: PROJECT - Add New Item.

Screenshot

10) Im nächsten Fenster wählen C++File(.cpp) und - WICHTIG! - geben Sie ihm einen Namen mit einer .asm Erweiterung. Klicken Sie auf Add.

Screenshot

10) Überprüfen Sie nun, ob die .asm Datei die richtigen Eigenschaften hat. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei und wählen Sie Properties.

Screenshot

11) auf der Eigenschaftenseite sollten Sie zumindest sehen:

Excluded From Build (empty) or No 
Item Type    Microsoft Macro Assembler 

Screenshot

Unter Command Line sicherzustellen, dass ml64.exe als Assembler gewählt wird.

Screenshot

Klicken Sie auf OK.

12) Jetzt können Sie die Dateien mit Inhalt füllen.

ConsoleApplication1.cpp:

#include <iostream> 
using namespace std; 

extern "C" void hello_from_asm(); 

int main() 
{ 
    cout << "Hello from CPP" << endl; 
    hello_from_asm(); 
    return 0; 
} 

callee.asm:

PUBLIC hello_from_asm 
EXTERN puts:PROC 

.data 

    hello1 db "Hello from ASM.",0 

.code 

hello_from_asm PROC 
    push rbp 
    mov rbp, rsp 
    sub rsp, 32     ; Shadow Space 
    and spl, -16    ; Align stack at 16 

    lea rcx, hello1 
    call puts 

    leave      ; Restore stack (rsp) & frame pointer (rbp) 
    ret 
hello_from_asm ENDP 

END 

13) Bauen Sie das Exe

Screenshot

und Führen Sie es mit CTRL-F5.

Die Anwendung wird in einem neuen Fenster geöffnet.

Verwandte Themen