УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

[BugWrong] Ошибка компиляции с -std=c++11


Автор Сообщение
Сообщение создано: 17. 11. 2017 [14:12]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
Если собирать с Qt5 (пробовал обе LTS версии 5.6 и 5.9.1) требуется указывать флаг -std=c++11:
JAVASCRIPT
./configure --prefix=$HOME/apps/openscada09qt56 --with-qt5=yes PKG_CONFIG_PATH=$HOME/apps/Qt/5.6/gcc_64/lib/pkgconfig Qt5Widgets_CFLAGS='-std=c++11'

Что в свою очередь при сборке компилятором gcc версии 5.4 приводит к следующей ошибке компиляции:

libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../src -std=c++11 -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtPrintSupport -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtWidgets -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtGui -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtCore -I/home/aleax/apps/Qt/5.6/gcc_64/include -g -O2 -MT ui_Vision_la-vis_shapes.lo -MD -MP -MF .deps/ui_Vision_la-vis_shapes.Tpo -c vis_shapes.cpp -fPIC -DPIC -o .libs/ui_Vision_la-vis_shapes.o
vis_shapes.cpp: In member function ‘void VISION::ShapeDiagram::makeTrendsPicture(VISION::WdgView*)’:
vis_shapes.cpp:3283:17: error: ‘isnan’ was not declared in this scope
if(isnan(curVl)) curVl = EVAL_REAL;
^
vis_shapes.cpp:3283:17: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:641:5: note: ‘std::isnan’
isnan(_Tp __x)
^
vis_shapes.cpp: In member function ‘void VISION::ShapeDiagram::TrendObj::loadTrendsData(bool)’:
vis_shapes.cpp:3685:127: error: ‘isinf’ was not declared in this scope
vis_shapes.cpp:3685:127: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:621:5: note: ‘std::isinf’
isinf(_Tp __x)
^
vis_shapes.cpp:3784:88: error: ‘isinf’ was not declared in this scope
vis_shapes.cpp:3784:88: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:621:5: note: ‘std::isinf’
isinf(_Tp __x)
^
Makefile:606: спроба виконання рецепта для мети «ui_Vision_la-vis_shapes.lo» зазнала невдачі
make: *** [ui_Vision_la-vis_shapes.lo] Помилка 1


решается указанием неймспейса std:
JAVASCRIPT
diff --git a/src/moduls/ui/Vision/vis_shapes.cpp b/src/moduls/ui/Vision/vis_shapes.cpp
index 0748c4d..585c066 100644
--- a/src/moduls/ui/Vision/vis_shapes.cpp
+++ b/src/moduls/ui/Vision/vis_shapes.cpp
@@ -3280,7 +3280,7 @@ void ShapeDiagram::makeTrendsPicture( WdgView *w )
                curTm = vmin(aVend,vmax(aVbeg,cP.val()[a_pos].tm));
                curVl = cP.val()[a_pos].val;
                if(vsPercT && curVl != EVAL_REAL) curVl = 100*(curVl-bordL)/(bordU-bordL);
-               if(isnan(curVl)) curVl = EVAL_REAL;
+               if(std::isnan(curVl)) curVl = EVAL_REAL;
                curPos = tAr.x()+tAr.width()*(curTm-tBeg)/(tPict-tBeg);
            } else curPos = 0;
            if(!curPos || cP.val()[a_pos].tm >= aVend) end_vl = true;
@@ -3682,7 +3682,7 @@ void ShapeDiagram::TrendObj::loadTrendsData( bool full )
                    valEnd_ = (valEnd()/wantPer)*wantPer;
            if(lstTm && lstTm >= valEnd_) {
                double curVal = (req.text() == EVAL_STR) ? EVAL_REAL : s2r(req.text());
-               if((val_tp == TFld::Boolean && curVal == EVAL_BOOL) || (val_tp == TFld::Integer && curVal == EVAL_INT) || isinf(curVal))
+               if((val_tp == TFld::Boolean && curVal == EVAL_BOOL) || (val_tp == TFld::Integer && curVal == EVAL_INT) || std::isinf(curVal))
                    curVal = EVAL_REAL;
                if(valEnd_ && (lstTm-valEnd_)/vmax(wantPer,trcPer) > 2) vals.push_back(SHg(lstTm-trcPer,EVAL_REAL));
                else if((lstTm-valEnd_) >= wantPer) vals.push_back(SHg(lstTm,curVal));
@@ -3781,7 +3781,7 @@ void ShapeDiagram::TrendObj::loadTrendsData( bool full )
            curPos = s2i(TSYS::strParse(svl,0," ",&var_off,true));
            curVal = s2r((curValS=TSYS::strParse(svl,0," ",&var_off,true)));
            if(curValS == EVAL_STR || (val_tp == TFld::Boolean && curVal == EVAL_BOOL) ||
-                                     (val_tp == TFld::Integer && curVal == EVAL_INT) || isinf(curVal))
+                                     (val_tp == TFld::Integer && curVal == EVAL_INT) || std::isinf(curVal))
                curVal = EVAL_REAL;
        }
        else curPos = maxPos+1;



P.S.: Обнаружил что в одном из рабочих проектов, в интерфейсе Vision, при переходе с главного кадра на другую страницу происходит падение скады. Сборка с Qt5.9.1 падает, а с Qt5.6 нет. Буду дальше искать в чем дело.
Сообщение создано: 17. 11. 2017 [14:54]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"aleax" wrote:

Если собирать с Qt5 (пробовал обе LTS версии 5.6 и 5.9.1) требуется указывать флаг -std=c++11:

Да, требуется, только нужно их собирать компилятором у которого это уже по умолчанию или достаточно прямо и где ничего подобного нет!
Смотрим сборку для Android: http://oscada.org/wiki/Sub-projects/Adaption_to_Android

Т.е. здесь нет ошибок OpenSCADA!

"aleax" wrote:

P.S.: Обнаружил что в одном из рабочих проектов, в интерфейсе Vision, при переходе с главного кадра на другую страницу происходит падение скады. Сборка с Qt5.9.1 падает, а с Qt5.6 нет. Буду дальше искать в чем дело.

На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !

Learn, learn and learn better than work, work and work.
Сообщение создано: 17. 11. 2017 [15:58]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
"roman" wrote:

Да, требуется, только нужно их собирать компилятором у которого это уже по умолчанию или достаточно прямо и где ничего подобного нет!
Смотрим сборку для Android: http://oscada.org/wiki/Sub-projects/Adaption_to_Android

Т.е. здесь нет ошибок OpenSCADA!


ОК, буду дальше изучать вопрос.
Посмотрел в документации http://oscada.org/wiki/Sub-projects/Adaption_to_Android, там явно указывается флаг c++11 при подготовке сборочной среды:
JAVASCRIPT
export CXXFLAGS="$CFLAGS -std=c++11 -I$NDK_PATH/sources/cxx-stl/gnu-libstdc++/$TARGET_V/include\


"roman" wrote:

На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !

Собираю и тестирую под десктоп линукс. Пока изучаю coredump.
Сообщение создано: 18. 11. 2017 [00:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"aleax" wrote:

ОК, буду дальше изучать вопрос.
Посмотрел в документации http://oscada.org/wiki/Sub-projects/Adaption_to_Android, там явно указывается флаг c++11 при подготовке сборочной среды:

Да, и компиляторы там "прямы" и не теряют стандартных математических функций C.

"aleax" wrote:

"roman" wrote:

На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !

Собираю и тестирую под десктоп линукс. Пока изучаю coredump.

Не падало. Собственно там есть проблема с видом "Текст" примитива элементов формы на отдельном окне, что приводит к падению, но везде и независимо от Qt.
Это исправил.

В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.

Learn, learn and learn better than work, work and work.
Сообщение создано: 20. 11. 2017 [09:43]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"roman" wrote:

В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.

Переключил, теперь все сборки для Debian9 используют Qt5!

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 11. 2017 [08:06]
Megavoltik
Игорь Гапша
Зарегистрирован(а) с: 20.11.2017
Сообщения: 4
"roman" wrote:

"roman" wrote:

В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.

Переключил, теперь все сборки для Debian9 используют Qt5!


Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.

Да, Debian 9.1.

[Сообщение редактировалось 2 раз(а), в последний раз 23.11.2017 в 08:13.]
Сообщение создано: 23. 11. 2017 [08:42]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"Megavoltik" wrote:

"roman" wrote:

Переключил, теперь все сборки для Debian9 используют Qt5!

Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.

Да, есть такое, в смысле невозможности даже выбрать элемент в дереве глубиной более первого уровня.
Только это не проблема OpenSCADA поскольку она никак выбором элементов не управляет, а только принимает сигналы по выбору.

Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 11. 2017 [08:56]
Megavoltik
Игорь Гапша
Зарегистрирован(а) с: 20.11.2017
Сообщения: 4
"roman" wrote:

"Megavoltik" wrote:

"roman" wrote:

Переключил, теперь все сборки для Debian9 используют Qt5!

Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.

Да, есть такое, в смысле невозможности даже выбрать элемент в дереве глубиной более первого уровня.
Только это не проблема OpenSCADA поскольку она никак выбором элементов не управляет, а только принимает сигналы по выбору.

Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.


Даже больше скажу: на Qt 5.5.1 такого на замечалось. Спасибо

Может тогда вернуть пока на Qt4?

[Сообщение редактировалось 1 раз(а), в последний раз 23.11.2017 в 09:00.]
Сообщение создано: 24. 11. 2017 [10:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"Megavoltik" wrote:

"roman" wrote:

Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.


Точнее там у меня сейчас 5.8 и на нём эта проблема есть.

"Megavoltik" wrote:

Даже больше скажу: на Qt 5.5.1 такого на замечалось. Спасибо
Может тогда вернуть пока на Qt4?

Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 11. 2017 [13:07]
Megavoltik
Игорь Гапша
Зарегистрирован(а) с: 20.11.2017
Сообщения: 4
"roman" wrote:

Точнее там у меня сейчас 5.8 и на нём эта проблема есть.

На Qt 5.9.3 та же беда. Сегодня попробовал. Короче все что выше 5.3 - неработоспособно. Может тогда в зависимостях не >=5.7.0, а >=5.3 поставить? Хоть дописать смогу тест...

"roman" wrote:

Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.

ОК



[Сообщение редактировалось 1 раз(а), в последний раз 24.11.2017 в 13:08.]



18617