Ссылка на Kernel32.lib в ассемблере
Я начал изучать ассемблер сегодня и провел много тестов на Linux, которые работали очень хорошо! Я перешел на свой компьютер и начал пытаться написать здесь. Я столкнулся с проблемой при попытке вызвать внешние функции (которая снова работала нормально в linux), где я получил LINK 2001 Unresolved External error, сообщающий, что WriteConsoleA не определен при компиляции с nasm:
nasm -f win32 test.asm -o test.obj
и с cl.exe:
cl test.obj /link libcmt.lib kernel32.lib
Я получаю эти ошибки:
test.obj : error LNK2001: unresolved external symbol ExitProcess
test.obj : error LNK2001: unresolved external symbol GetStdHandle
test.obj : error LNK2001: unresolved external symbol WriteConsoleA
test.exe : fatal error LNK1120: 3 unresolved externals
Ассамблея:
extern ExitProcess, GetStdHandle, WriteConsoleA
NULL equ 0
STD_OUTPUT_HANDLE equ -11
section .data
msg db "Hello world!",0xa
msgLen equ $-msg
section .bss
dummy resd 1
section .text
global _main
_main:
push STD_OUTPUT_HANDLE
call GetStdHandle
push NULL
push dummy
push msgLen
push msg
push eax
call WriteConsoleA
push NULL
call ExitProcess
Скопировано почти точно изВот, Любая помощь высоко ценится! Спасибо!