undefined reference to sqrt (or other mathematical functions)

В GCC скомпилируйте с-Wno-unknown-pragmas

В Visual Studio MS 2005 (этот вопрос не отмечен с gcc, таким образом, я добавляю это для ссылки), можно отключить глобально в Настройках Проекта-> C/C++> Усовершенствованный. Войдите 4068 в, "Отключают Определенные Предупреждения"

, или можно добавить это к любому файлу для отключения предупреждений локально

#pragma warning (disable : 4068 ) /* disable unknown pragma warnings */
57
задан alk 28 May 2017 в 09:46
поделиться

1 ответ

Вот мое наблюдение, во-первых необходимо включать заголовок math.h как sqrt() функция, объявленная в math.h заголовочный файл. Для, например,

#include <math.h>

, во-вторых, если Вы читаете страницу руководства sqrt, Вы заметите эту строку Ссылка с-lm.

#include <math.h> /* header file you need to include */

double sqrt(double x); /* prototype of sqrt() function */

Link with -lm. /* Library linking instruction */

, Но приложение все еще говорит что неопределенная ссылка на sqrt. Вы видите какую-либо проблему здесь?

Ошибка компилятора корректна, поскольку Вы не связали свою программу с библиотекой lm & компоновщик неспособен найти ссылку sqrt(), необходимо связать ее явно. Для, например,

gcc -Wall -Wextra -Werror -pedantic test.c -lm
1
ответ дан 24 November 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: