【问题标题】:MASM64, Visual studio 2015 C program with assembly function in separate fileMASM64,Visual Studio 2015 C 程序,在单独的文件中具有汇编功能
【发布时间】:2016-06-19 05:35:09
【问题描述】:

Linking C with Assembly in Visual Studio 我已经看过了,但没有包含任何有用的信息。

我有一个 C 程序,我在其中使用了用汇编语言编写的函数。 我在带有声明的 C 文件中包含 fun.h 标头,并在实现中包含 fun.asm。 它最初是使用 NASM 编写的,并且有一个 global 关键字。如何在 MASM 中实现同样正确的链接效果?

小例子:

main.c:

int main() 
{
    f();
    return 0;
}

f.h:

void f();

f.asm:

   .DATA
_05 DQ 0.5
_PI DQ 3.14159265358979323846264338327

   .CODE
public _f
_f PROC
_f ENDP
   END

【问题讨论】:

  • PUBLIC 关键字而不是 GLOBAL
  • 当我使用 public 时,出现未解决的外部符号错误
  • 好的,您能否在您的问题中提供一个最小的完整示例(C 代码和汇编文件)。
  • 否,因为使用 C 而非 C++ 编写的代码会出现语法错误。
  • 因为它是 x86-64,所以不需要模型指令,也不需要 PROC 函数上的下划线。我在这里用这些更改编译它并且它可以工作。

标签: c visual-studio assembly x86-64 masm


【解决方案1】:

根据 Michael Petch 在评论中写道: 搜索的关键字是 PUBLIC,在 x86_64 中,PROC 函数不需要下划线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-10
    • 2014-04-01
    • 2022-11-27
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多