0

Пытаюсь скомпилировать программу, но выдаёт ошибку undefined reference to `__imp_gets_s'

Заголовочные файлы такие:

#include <tchar.h>
#include <locale>
#include <cstdlib>
#include <cstring>
#include <Windows.h>

Ругается на такие строки:

gets_s(collection[i].title, 49);
gets_s(collection[i].genre, 49);
gets_s(collection[i].platform, 49);

... ...

1 Answers1

-1

Нужно добавить заголовочный файл

#include <stdio.h>

в список инклудов для препроцессора.

gets_s() - функция из stdio.h, следовательно он необходим.

Кроме того, get_s() c сигнатурой char *gets_s( char *str, rsize_t n ) - это из C11, поэтому стоит удостовериться что вы компилируете\линкуете код согласно этому стандарту C.

  • ошибка не исчезла – Архангел Sep 10 '21 at 17:24
  • C:\Users\User\AppData\Local\Temp\ccAiPm2z.o:main.cpp:(.text+0x7e): undefined reference to `__imp_gets_s' – Архангел Sep 10 '21 at 17:24
  • Ошибка при линковке, а не при компиляции, так что stdio ни при чем. – Mikhajlo Sep 11 '21 at 10:44
  • @Mikhailo stdio - часть ответа. C11 - вторая часть. Многие IDE имеют настройки линковки в зависимости от компиляции по определенному стандарту. Я думаю, что проблема именно в этом. Так как конкретная IDE - и даже вообще как это компилируется не указано – я написал общий совет о C11. Добавил слово "линкуете" в ответ. – Anton Menshov Sep 12 '21 at 03:55