【问题标题】:import in NASM doesn't work?在 NASM 中导入不起作用?
【发布时间】:2013-01-31 21:56:47
【问题描述】:

我正在尝试在 Windows 7(使用 NASM)上编译以下代码:

[BITS 32]

extern ExitProcess
import ExitProcess kernel32.dll
extern MessageBoxA
import MessageBoxA user32.dll

segment .data use32
Caption db 'Caption Text',0
Text db "My MessageBox Text.",0

segment .code use32
..start:
push dword 0
push dword Caption
push dword Text
push dword 0
call [MessageBoxA]

push dword 0
call [ExitProcess]

为了编译这个,我尝试了nasm -o test.o test.asm,但它说:

test.asm:4: error: parser: instruction expected
test.asm:6: error: symbol `import' redefined
test.asm:6: error: parser: instruction expected

为什么它不起作用?

编辑:好的。简单的错误...nasm -o test.o -f obj test.asm 有效...

【问题讨论】:

    标签: windows import nasm


    【解决方案1】:

    【讨论】:

    • 我使用 'obj' 作为格式并使用 ALINK 链接它。工作正常。谢谢
    【解决方案2】:

    您不应该使用 Obj。这适用于 DOS 而不是 Windows。是的,您可以在 ASM 代码中使用大量编译器指令来使其在 Windows 中工作,但是如果您使用 Win32 类型进行编译,您最终会得到专门在 Windows 中工作的代码。不幸的是,编写 NASM 的人以这样的方式编写它,即 import 在 Win32 模式下不起作用(即使它应该,因为 import 是非常标准的,并且在 Windows 中工作是必需的操作)。更不幸的是,编写 NASM 的人似乎已经停止添加/改进/升级程序,并且基本上已经放弃了该项目。并且社区无法自行修复此错误(NASM 的源代码不公开),这给我们留下了非常有缺陷的产品!

    【讨论】:

    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 2015-09-22
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2014-11-09
    • 2015-01-29
    相关资源
    最近更新 更多