Как запрограммировать сборку x64 с c ++ в VS 2019? - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь заставить работать очень простую сборку x64 с помощью Visual Studio 2019, но она продолжает давать мне «фатальную ошибку LNK1120: 1 неразрешенный внешний вид». Я убедился, что masm был проверен в зависимостях сборки, и это было в режиме x64; так что, не уверен, что еще делать, так как это мой самый первый продукт в asm. Любая помощь будет принята с благодарностью! Спасибо.

#include <iostream>
using namespace std;
extern "C" int someNumber();
int main() {
cout << "Number: " << someNumber() << endl;
return 0;
}

и

.code
someNumber proc
    mov rax, 222
    ret
someNumber endp
end

1 Ответ

0 голосов
/ 10 февраля 2020

Вам необходимо создать пользовательский встроенный инструмент (или шаг) для исходного файла сборки. Щелкните правой кнопкой мыши имя исходного файла сборки, затем свойства, ..., пользовательский инструмент сборки ....

Для отладочной сборки:

Command Line   ml64 /c /Zi /Fo$(OutDir)\someNumber.obj someNumber.asm
Outputs        $(OutDir)\someNumber.obj

Для сборки выпуска, то же самое строк, но без / Zi

Command Line   ml64 /c /Fo$(OutDir)\someNumber.obj someNumber.asm
Outputs        $(OutDir)\someNumber.obj

В someNumber.asm вам необходимо объявить функцию как publi c:

        .code
        public someNumber
someNumber proc
        mov     rax, 222
        ret
someNumber endp
        end

VS2019. Ассемблер ML64 по умолчанию равен "C msgstr "модель, поэтому нет необходимости добавлять префикс" _ "к именам.

...