gpt4 book ai didi

c++ - 无法在 VC++ 中从 NASM 调用 c 函数,除了 main,出现链接错误

转载 作者:行者123 更新时间:2023-11-28 07:59:42 32 4
gpt4 key购买 nike

谁能告诉我为什么我不能从 NASM 调用任何全局函数,except 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>Linking... 1>my_asm.obj : error LNK2001: unresolved external symbol _c_function 1>F:\Projects\OSDev\assmebly_test\Debug\project.exe : fatal error LNK1120: 1 unresolved externals

如您所见,我们没有收到 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

谁能告诉我这是什么问题?提前致谢。 (请注意,这是一个示例程序,但仍然存在问题)

最佳答案

问题是名称修改。解决方案是 extern "C"

关于c++ - 无法在 VC++ 中从 NASM 调用 c 函数,除了 main,出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816829/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com