Golink是否需要在符号名称上装饰?

时间:2012-07-28 15:58:31

标签: windows assembly x86 nasm

好的,我正在用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

1 个答案:

答案 0 :(得分:1)

我使用的是Nasm,但不是在Windows中,所以我对GoLink并不熟悉。我认为它在内部添加了“装饰”。它可能需要领先的下划线。如果在命令行中使用“--prefix _”,Nasm会将此添加到任何extern / global。

仔细阅读错误消息可能会让您看到GoLink所期望的内容。尝试直到试用>错误。 :)

最佳, 弗兰克