如何从masm引用外部C ++函数?

问题描述 投票:1回答:1

我正在学习masm,我在调用外部函数时遇到问题。

我在c ++中有一个名为writei的函数,它接收一个uint64并输出它。

int writei(uint64_t a)
{
    cout << a;
    return 1;
}

我尝试“extrn”并从.asm文件中调用它,但编译器抛出“函数mai中引用的未解析的外部符号写入”。

这是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++ visual-c++ masm
1个回答
1
投票

除此之外,您需要在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++

© www.soinside.com 2019 - 2024. All rights reserved.