我目前正在学习技巧,并且在调用外部函数时遇到问题。
我在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
最佳答案
除其他外,您在C++方法声明中需要"extern C"。
例如:
extern "C" {
int writei(uint64_t a);
}
int writei(uint64_t a)
{
cout << a;
return 1;
}
这是一篇很好的文章,更详细地说明了这一点:
ISO C++ FAQ: How to mix C and C++
关于c++ - 如何从masm引用外部C++函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55906684/