Неразрешенный внешний символ printf при линковке
Набросал простенькое приложение на NASM:
extern printf ; msvcrt.dll
extern ExitProcess ; kernel32.dll
section .text
global main
main:
sub rsp, 28h
mov rcx, str
call printf
xor eax, eax
add rsp, 28h
call ExitProcess
section .data
str: db 'data string', 0
Далее вызываю NASM:
nasm -fwin64 test.asm
Объектный файл формируется успешно, а вот при линковке мелкософтовским link.exe
link /nologo /entry:main /subsystem:console /out:test.exe /nodefaultlib test.obj msvcrt.lib kernel32.lib
Получаю следующее:
test.obj : error LNK2001: неразрешенный внешний символ "printf"
test.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
То есть kerne32.lib линковщик подхватывает (если удалить код с printf и снова повторить действия выше), а почему с msvcrt.lib номер не прокатывает? Хочется разобраться именно с link.exe что не так. Есть у кого какие соображения на сей счет?