#debugging #masm #masm64
Вопрос:
;programul citeste de la tastatura doua numere intregi si le afiseaza. .386 ;folosim instructiuni cu operanzi pe 32 biti .MODEL FLAT, C ;memoria este organizata liniar si conventia de apel a functiilor este cea din C .STACK 100h ;dimensunea stivei alocate printf PROTO arg1:ptr BYTE, printlist:VARARG scanf PROTO arg2:ptr BYTE, inputlist:VARARG ;prototipurile functiilor printf si scanf .DATA format1 BYTE "%s",0 format2 BYTE "%d",0 format3 BYTE "%s d si d",10,0 mesaj1 BYTE "Introduceti numerele:",0Ah,0 mesaj2 BYTE "num1=",0 mesaj3 BYTE "num2=",0 mesaj4 BYTE 0Ah,"Numerele sunt: ",0 num1 SDWORD ? ;sdword=signed double word --gt; numar de 32 de biti cu semn; echivalentul int num2 SDWORD ? .CODE main PROC ;printf("%s","Introduceti numerele:n"); INVOKE printf, ADDR format1, ADDR mesaj1 ;printf("%s","num1="); ;scanf("%d",amp;num1); ;printf("%s","num2="); ;scanf("%d",amp;num2); ;printf("%s %d si %dn","nNumerele sunt:",num1,num2); INVOKE printf, ADDR format1,ADDR mesaj2 INVOKE scanf, ADDR format2,ADDR num1 INVOKE printf, ADDR format1,ADDR mesaj3 INVOKE scanf, ADDR format2,ADDR num2 INVOKE printf, ADDR format3, ADDR mesaj4, num1, num2 ret main ENDP END
После того, как я нажму отладку, у меня будет 3 ошибки: 1gt;main.obj : ошибка LNK2019: неразрешенный внешний символ _printf, на который ссылается функция _main 1gt;main.obj : ошибка LNK2019: неразрешенный внешний символ _scanf, на который ссылается функция _main 1gt;ССЫЛКА : ошибка LNK2001: неразрешенный внешний символ _mainCRTStartup
Я также хотел добавить, что я выбрал masm из зависимостей конструктора и добавил библиотеки msvcrt.lib и legacy_stdio_definitions.lib на входе компоновщика. Вы знаете, в чем может быть проблема?
Комментарии:
1. не после отладки, а на этапе сборки. добавьте msvcrt.lib или libcmt.lib во входные данные компоновщика
2. Большое вам спасибо, теперь это сработало, я думал, что уже добавил их туда!