我在 Windows 10 中使用 Visual studio 2019,我想使用 MSVC(平台工具集 142)和 NASM(版本 2.14.02)在 x86 中编译以下代码:
foo.asm
section .text
global foo
foo:
mov eax, 123
ret
Run Code Online (Sandbox Code Playgroud)
主程序
extern "C" int foo(void);
int main()
{
int x = foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但我得到了错误:
在 x64 中运行良好,在 x86 中生成的文件 main.obj 向函数名 foo 添加前导下划线,从而生成 _foo。这在 x64 中不会发生,但将符号保留为 foo,而不是 _foo。
那么,是否有任何适用于 x86 和 x64 平台的解决方案(最好不修改源代码,也许是 MSVS 编译器的一些编译器/链接器标志)?
我真的很感谢任何帮助。