【问题标题】:Does Golink require decorations on symbol names?Golink 是否需要对符号名称进行修饰?
【发布时间】:2012-07-28 15:58:31
【问题描述】:

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

【问题讨论】:

    标签: windows assembly x86 nasm


    【解决方案1】:

    我使用 Nasm,但不在 Windows 中,所以我对 GoLink 不是很熟悉。我认为它在内部添加了“装饰”。它可能需要前导下划线。如果您在命令行上使用“--prefix _”,Nasm 会将其添加到任何外部/全局中。

    仔细阅读错误消息可能会让您对 GoLink 的预期有所了解。尝试直到试验>错误。 :)

    最好, 弗兰克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2017-02-01
      • 1970-01-01
      相关资源
      最近更新 更多