如何解决如何从 Visual Studio 中的 .asm 文件中定义的 C 中引用全局变量
我有一个定义变量 foo
file.asm:
.data
foo DWORD 0
.code
{ ... }
我想在 main.c 中的 file.asm 之外引用 foo
,这是我尝试过的:
main.c
extern int foo;
int main()
{
foo++;
}
但是这会导致链接器错误:LNK2001 未解析的外部符号 foo
,我如何从 main.c 引用它?
更新:
我也尝试过使用 PUBLIC 指令:
file.asm:
.data
PUBLIC foo
foo DWORD 0
这会导致相同的链接器错误 LNK2001
解决方法
MSVC 在符号名称的开头使用下划线,并且显然使用 PUBLIC
来导出符号(否则标签是内部的,就像 C 中的 static
变量)。试试
.data
PUBLIC _foo
_foo DWORD 0
这基本上就是 MSVC 本身所做的,参见 https://godbolt.org/z/Phb4Pv
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。