Неразрешенный внешний символ 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 что не так. Есть у кого какие соображения на сей счет?


Ответы (0 шт):