我想在Assembly(使用NASM)中创建一个简单的应用程序,它将获得命令行参数。现在我使用extern _GetCommandLineA
和call _GetCommandLineA
来调用该函数。我编译代码并从NASM获取目标文件。
现在我想使用GCC来链接和创建EXE。我不想使用标准库,因此我使用此命令来构建可执行文件:
gcc test.obj -s -nostartfiles -nostdlib -nodefaultlibs -o test.exe
它给我一个Undefined reference to GetCommandLineA
错误,作为ASM的初学者,我不知道为什么?真的很感激一些帮助。提前谢谢!
答案 0 :(得分:1)
GetCommandLineA
和GetCommandLineW
在kernel32.dll
中定义,与大多数Windows API一样,使用WINAPI (stdcall) calling convention。
为了从程序集中调用此函数,您需要指定完全“装饰”的符号名称,在本例中为_GetCommandLineA@0
使用_GetCommandLineA
_GetCommandLineA@0