好的,我正在用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
答案 0 :(得分:1)
我使用的是Nasm,但不是在Windows中,所以我对GoLink并不熟悉。我认为它在内部添加了“装饰”。它可能需要领先的下划线。如果在命令行中使用“--prefix _”,Nasm会将此添加到任何extern / global。
仔细阅读错误消息可能会让您看到GoLink所期望的内容。尝试直到试用>错误。 :)
最佳, 弗兰克