x64 bit asm в MSVC11 ошибка

Таким образом, у меня есть два файла в моем решении.

test.asm

.code
test proc
mov eax, 1
ret
test endp
end

а также

Source.cpp

#include <iostream>
#include <conio.h>

extern "C" int test();

int main()
{
std::cout << "eax = " << test() << std::endl;
_getch();
return 0;
}

Я установил платформу решения на x64 в менеджере конфигурации и проверил masm в настройке сборки. Я нашел два связанных поста, но то, что было предложено, не помогло. Я следил за видео на YouTube и сделал точно так же, как автор, но я получаю эти ошибки:

1>Source.obj : error LNK2019: unresolved external symbol _test referenced in function main
1>C:\Users\omar\Desktop\ASM\x64\Debug\ASM.exe : fatal error LNK1120: 1 unresolved externals

Может ли кто-нибудь помочь мне разобраться в чем проблема? Я очень хочу попасть в сборку x64. Спасибо

1

Решение

Имя функции вашего ассемблера должно быть _test и не только test, Вы можете увидеть это в сообщении об ошибке вашего компоновщика:

error LNK2019: unresolved external symbol _test
/\
||
right here ---------------------------------

Для более подробной информации смотрите C украшением имени в Microsoft Windows.

2

Другие решения

Предполагая, что вы находитесь в Visual Studio, вам нужно добавить имя файла сборки к дополнительным зависимостям

  1. Щелкните правой кнопкой мыши на проекте
  2. Перейти к свойствам
  3. Нажмите на линкер
  4. Нажмите на вход
  5. В дополнительные зависимости добавить тест

Предполагая, что ассемблерный код работает нормально и он находится в том же каталоге, что и исходный файл c ++, он должен работать

0

Исправлена. Круги этот

Кроме того, я должен был использовать подчеркивание

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector