好的,所以我正在使用 NASM 组装代码并与 Golink 链接。我一直在直接通过 DLL 使用 Windows API 调用和 C 调用。例如,kernel32.dll 用于类似 ExitProcess 的东西,msvcrt.dll 用于类似 printf 的东西。但是,当我尝试使用这样的装饰时,_ExitProcess@4或_printf golink 抱怨装饰并建议使用/mix标志。当我使用它时,Windows 抱怨输出文件不是有效的 win32 程序。当我不使用装饰品时,它工作得很好。谁能解释一下怎么回事?
例子:
extern printf
extern ExitProcess
;A bunch of code which isn't really important to this
然后我的命令:
nasm -fwin32 test.asm
golink test.obj kernel32.dll msvcrt.dll /console /entry _start