谁能告诉我为什么我不能从 NASM 调用任何全局函数,除了main ?(在你问之前)是的,我已经在 stackoverflow 和互联网上阅读了所有关于此的问题大约 8 小时。
C++ 代码。
void main();
extern "C" void nasm_function(void);
void c_function()
{
}
void main()
{
nasm_function();
system("pause");
}
NASM 代码,
extern _c_function
extern _main
segment .text
global _nasm_function
_nasm_function:
call _main
call _c_function
输出,
1>链接... 1>my_asm.obj : 错误 LNK2001: 无法解析的外部符号 _c_function 1>F:\Projects\OSDev\assmebly_test\Debug\project.exe : 致命错误 LNK1120: 1 无法解析的外部
如您所见,我们没有得到 main 的链接错误。我不知道为什么。:)
设置,
building nasm using custom-build-rules with nasm.exe -f win32
Calling convention is __cdecl (/Gd)
Visual Studio 2008
NASM version 2.05
Didn't include my_asm.obj as a input to linker
任何人请告诉我是什么问题?提前致谢。(请注意,这是一个示例程序,但仍然存在问题)