• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Проблема с функцией log

nikolz

Well-known member
Добрый день,
Возникла такая проблема (XP, UDK последней сборки).
Делаю вот такой тест:
Вставляю функцию log в программу.
Следующим образом:
1 Вариант :
float test(float x){ return log(2.); }
собирается без проблем.
------------------------------------
2 Вариант :
float test(float x){ return log(x); }
Выдает ошибки с указанием совершенно не этой строки в программе.
C:\Espressif\examples\ESP8266\1wire_ds18b20/user/user_main.c:375: undefined reference to `log'
-----------------------------------
еще такой эффект.
Если функцию log вызвать в user_init для числа то ошибки нет а если в цикле то ошибка.
если вызвать в колбеке, то ошибка всегда и для числа и для цикла.
Т е получается что вызвать математические функции невозможно внутри циклов или функций, кроме вызова в user_init.
---------------------------------------
Надежда слабая, что кто-то знает , как это исправить, но надежда умирает последней.
Есть идеи как это исправить?
спасибо
 

sboganov

Member
Добрый день,
Возникла такая проблема (XP, UDK последней сборки).
Делаю вот такой тест:
Вставляю функцию log в программу.
Следующим образом:
1 Вариант :
float test(float x){ return log(2.); }
собирается без проблем.
------------------------------------
2 Вариант :
float test(float x){ return log(x); }
Выдает ошибки с указанием совершенно не этой строки в программе.
C:\Espressif\examples\ESP8266\1wire_ds18b20/user/user_main.c:375: undefined reference to `log'
-----------------------------------
еще такой эффект.
Если функцию log вызвать в user_init для числа то ошибки нет а если в цикле то ошибка.
если вызвать в колбеке, то ошибка всегда и для числа и для цикла.
Т е получается что вызвать математические функции невозможно внутри циклов или функций, кроме вызова в user_init.
---------------------------------------
Надежда слабая, что кто-то знает , как это исправить, но надежда умирает последней.
Есть идеи как это исправить?
спасибо
Скорее всего log объявлена как log(double) - значит не может сделать boxing от float и не находит функцию...
 

sboganov

Member
вот такая запись в user_init
float z1=10000000.; float m1=log(z1);
работает без проблем.
Прикольно - есть 2 функции log - одна в math.h - вторая в <cmath> (для C++) и похоже какая-то реализация не работает.

Можешь проверить - либо весь проект компилировать как C++, или только как C. По идеи либо все заработает, либо все перестанет работать :)
 
Сверху Снизу