I'm trying to run the following Hello Word example in x86 assembly under Windows:
global _main
extern _GetStdHandle@4
extern _WriteFile@20
extern _ExitProcess@4
section.text
_main :
; DWORD bytes;
mov ebp, esp
sub esp, 4
; hStdOut = GetstdHandle(STD_OUTPUT_HANDLE)
push - 11
call _GetStdHandle@4
mov ebx, eax
; WriteFile(hstdOut, message, length(message), &bytes, 0);
push 0
lea eax, [ebp - 4]
push eax
push(message_end - message)
push message
push ebx
call _WriteFile@20
; ExitProcess(0)
push 0
call _ExitProcess@4
; never here
hlt
message :
db 'Hello, World', 10
message_end :
But then I get the following error when trying to link the assembled .obj file:
error LNK2001: unresolved external symbol _GetStdHandle@4
error LNK2001: unresolved external symbol _WriteFile@20
error LNK2001: unresolved external symbol _ExitProcess@4
fatal error LNK1120: 3 unresolved externals
Source of my example: How to write hello world in assembler under Windows?
How to fix these? Or also, why isn't the example working for me?