Внешний файл сборки в visual studio
Я искал и нашел, я не могу использовать __asm
в х64 в визуальной студии. Вместо этого я должен использовать внешний файл сборки.
Как добавить внешний файл сборки в мой консольный проект win32?
Как можно их скомпилировать?
Можете ли вы объяснить шаг за шагом.
1 ответ
Как создать x64-проект со смешанным исходным кодом с помощью файла сборки x64 в Visual Studio:
1) Запустите Visual Studio (Community) 2015 и выберите FILE - New - Project
,
2) В следующем окне выберите Win 32 Console Application
,
3) Вы получаете подтверждение. Нажмите на Next >
,
4) В следующем окне вы можете принять настройки по умолчанию. Нажмите на Finish
,
5) Теперь выберите PROJECT - Build Customizations...
,
6) в следующем окне отметьте masm(.targets,.props)
и нажмите на OK
,
7) Выберите Build - Configuration Manager...
8) Изменить Active solution platform
до х64
9) Создайте callee.asm: PROJECT - Add New Item
,
10) В следующем окне выберите C++File(.cpp)
и - ВАЖНО! - дать ему имя с .asm
расширение. Нажмите на Add
,
10) Теперь проверьте, если .asm
Файл имеет правильные свойства. В обозревателе решений щелкните правой кнопкой мыши файл и выберите Properties
,
11) На странице свойств вы должны увидеть как минимум:
Excluded From Build (empty) or No
Item Type Microsoft Macro Assembler
Под Command Line
убедиться, что ml64.exe
выбран в качестве ассемблера.
Нажмите на OK
,
12) Теперь вы можете заполнить файлы контентом.
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) Сборка.exe
и запустить его с помощью CTRL-F5.
Приложение будет открыто в новом окне.