Таким образом, у меня есть два файла в моем решении.
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. Спасибо
Имя функции вашего ассемблера должно быть _test
и не только test
, Вы можете увидеть это в сообщении об ошибке вашего компоновщика:
error LNK2019: unresolved external symbol _test
/\
||
right here ---------------------------------
Для более подробной информации смотрите C украшением имени в Microsoft Windows.
Предполагая, что вы находитесь в Visual Studio, вам нужно добавить имя файла сборки к дополнительным зависимостям
Предполагая, что ассемблерный код работает нормально и он находится в том же каталоге, что и исходный файл c ++, он должен работать
Исправлена. Круги этот
Кроме того, я должен был использовать подчеркивание