【发布时间】: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