我目前正在学习masm,但是在调用外部函数时遇到问题。
我在c ++中有一个称为writei的函数,它接收一个uint64并将其输出。
int writei(uint64_t a)
{
cout << a;
return 1;
}
我尝试从.asm文件中“提取”并调用它,但编译器抛出“在函数mai中引用的未解析的外部符号writei”。
这是masm代码(我正在使用Visual Studio 2019)
extern writei : proto
.code
mai proc
push rbp
push rsp
mov ecx,3
call writei
pop rsp
pop rbp
ret
mai endp
end
答案 0 :(得分:1)
在其他事情中,您需要在C ++方法声明中使用"extern C"。
例如:
extern "C" {
int writei(uint64_t a);
}
int writei(uint64_t a)
{
cout << a;
return 1;
}
这是一篇很好的文章,详细介绍了这一点: