GCC和NASM链接到外部库

时间:2012-06-05 19:25:07

标签: gcc command-line nasm undefined-reference

我想在Assembly(使用NASM)中创建一个简单的应用程序,它将获得命令行参数。现在我使用extern _GetCommandLineAcall _GetCommandLineA来调用该函数。我编译代码并从NASM获取目标文件。 现在我想使用GCC来链接和创建EXE。我不想使用标准库,因此我使用此命令来构建可执行文件:

gcc test.obj -s -nostartfiles -nostdlib -nodefaultlibs -o test.exe

它给我一个Undefined reference to GetCommandLineA错误,作为ASM的初学者,我不知道为什么?真的很感激一些帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

GetCommandLineAGetCommandLineWkernel32.dll中定义,与大多数Windows API一样,使用WINAPI (stdcall) calling convention

为了从程序集中调用此函数,您需要指定完全“装饰”的符号名称,在本例中为_GetCommandLineA@0

使用_GetCommandLineA

替换程序集文件中的_GetCommandLineA@0