【发布时间】:2014-02-28 09:49:40
【问题描述】:
我正在尝试在 windows xp 上的 mingw32 中用 nasm 和 ld 组装和链接一个简单的代码 这是我的代码,
extern _CopyFileA
section .data
src dd 'abc.txt',0
dest dd 'xyz.txt',0
false dd 'FALSE',0
section .text
global _WinMain@16
_WinMain@16:
push src
push dest
push false
call _CopyFileA
add esp, 12
ret
我正在尝试在winbase.h 中使用CopyFileA 函数
组装正常
nasm -f win32 copy.asm
但ld 失败
ld file.obj -lkernel32
它说,
undefined reference to `CopyFileA'
【问题讨论】:
-
您的意思是
_CopyFileA@12吗? -
是的。刚才我尝试将它与 GoLink 链接。它成功链接。但是exe文件执行在中间崩溃。文件复制成功。如何避免崩溃?
-
Win32 API 使用
stdcall调用约定,这意味着您不应该在函数调用后清理堆栈。此外,您可能应该以 0 作为参数调用ExitProcess来结束您的程序。 -
哇。我从来不知道。感谢加载。你刚刚治愈了 3 个小时的头痛。 :) 现在它正在工作。请将其添加为答案。
标签: windows winapi assembly mingw nasm